forked from jooby-project/jooby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
267 lines (259 loc) · 15.8 KB
/
index.html
File metadata and controls
267 lines (259 loc) · 15.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>jooby: getting started</title>
<meta name="description" content="Scalable, fast and modular micro web framework for Java. Build small/large apps easily and quickly with Netty, Undertow or Jetty.">
<meta name="keywords" content="Java, Micro Web Framework, Async, Easy to use, Micro, Sinatra, Express, Scalable, Modern, Best, Web, Framework, Lightweight, Microservices, welcome">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="#">
<link rel="publisher" href="#">
<meta name="robots" content="robots.txt">
<meta name="og:title" content="jooby">
<meta name="og:description" content="Scalable, fast and modular micro web framework for Java">
<!--
og:type
SI EL TEMPLATE ES UN ARTICULO (NOTA, VIDEO, ETC) CAMBIAR
"website" por "article"
-->
<meta name="og:type" content="website">
<meta name="og:url" content="https://jooby.org">
<!--
og:image
SI ES UNA NOTA Y LA NOTA TIENE UNA IMAGEN DE PREVIEW SE DEBE
CAMBIAR POR UNA IMAGEN CON LAS SIGUIENTES ESPECIFICACIONES
ANCHO: 200
ALTO: 200
FORMATO: JPG
-->
<meta name="og:image" content="https://jooby.org/resources/images/apps/facebook.jpg">
<meta name="og:site_name" content="jooby">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="jooby - do more! more easily!!">
<!--
twitter:image
SI ES UNA NOTA Y LA NOTA TIENE UNA IMAGEN DE PREVIEW SE DEBE
CAMBIAR POR UNA IMAGEN CON LAS SIGUIENTES ESPECIFICACIONES
ANCHO: 280
ALTO: 150
FORMATO: JPG
TAMAÑO MAXIMO: 1MB
-->
<meta name="twitter:image" content="https://jooby.org/resources/images/apps/twitter.jpg">
<meta name="twitter:site" content="@joobyproject">
<meta name="twitter:creator" content="https://twitter.com/edgarespina">
<meta name="twitter:domain" content="https://jooby.org">
<meta name="twitter:url" content="https://twitter.com/joobyproject">
<meta name="twitter:description" content="Scalable, fast and modular micro web framework for Java">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed57.png" sizes="57x57">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed60.png" sizes="60x60">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed72.png" sizes="72x72">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed76.png" sizes="76x76">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed114.png" sizes="114x114">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed120.png" sizes="120x120">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed144.png" sizes="144x144">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed152.png" sizes="152x152">
<link rel="apple-touch-icon-precomposed" href="/resources/images/apps/precomposed180.png" sizes="180x180">
<link href="/resources/images/apps/favicon.ico" rel="shortcut icon">
<link href="/resources/images/apps/favicon.png" rel="icon" sizes="16x16" type="image/png">
<link href="/resources/images/apps/favicon32.png" rel="icon" sizes="32x32" type="image/png">
<link href="/resources/images/apps/favicon96.png" rel="icon" sizes="96x96" type="image/png">
<link href="/resources/images/apps/android-chrome.png" rel="icon" sizes="192x192" type="image/png">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway:400,300,500,700">
<link rel="stylesheet" href="/resources/styles/application.css">
<link rel="stylesheet" href="/resources/styles/github.css">
<link rel="stylesheet" href="/resources/styles/devices.css">
<link rel="stylesheet" href="/resources/styles/sprites.css">
</head>
<body class="page-section">
<header class="site-header">
<div class="row">
<a href="/" title="Home" class="site-logo"><img src="resources/images/logo_jooby-2x.png" alt="Logo Jooby" width="76" height="31"></a>
<a class="show-mobile open-menu"><span></span></a>
<nav class="site-nav">
<ul>
<li class="active"><a href="/quickstart" title="Quick start">QUICK START</a></li>
<li class=""><a href="/doc" title="Doc">DOCS</a></li>
<li class=""><a href="/modules" title="Modules">MODULES</a></li>
<li class=""><a href="/community" title="Community">COMMUNITY</a></li>
<li class=""><a href="/faq" title="FAQ">FAQ</a></li>
<li><a href="https://javadoc.io/doc/org.jooby/jooby/1.6.6" target="_blank" title="API docs">API DOCS</a></li>
</ul>
</nav>
</div>
</header>
<main role="main" class="site-content">
<div class="section-title">
<div class="row">
<h1>Getting Started</h1>
</div>
</div>
<div class="row">
<div class="section-content">
<h2>welcome</h2>
<p>Welcome to the getting started guide, you will find here a step by step guide using a <strong>Maven archetype</strong>. Optionally, you might want to try the one of the starter projects:</p>
<ul>
<li><a href="https://github.com/search?q=topic%3Astarter+org%3Ajooby-project&type=Repositories" target="_blank">Starter projects</a></li>
<li><a href="https://github.com/jooby-project/gradle-starter" target="_blank">Gradle starter</a></li>
<li><a href="https://github.com/jooby-project/kotlin-starter" target="_blank">Kotlin starter</a></li>
<li><a href="https://github.com/jooby-project/kotlin-gradle-starter" target="_blank">Kotlin gradle starter</a></li>
</ul>
<h2>requirements</h2>
<ul>
<li>Install <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">JDK 8+</a></li>
<li>Install <a href="http://maven.apache.org/" target="_blank">Maven 3+</a></li>
</ul>
<h2>start</h2>
<p>Just paste this into a terminal (make sure you are in an empty folder, and <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank">Java 8</a> and <a href="http://maven.apache.org/download.cgi" target="_blank">Maven 3.x</a> are installed):</p>
<div class="highlighter-rouge codehilite">
<div class="copy-bar">
<span class="icon-clipboard-big copy-button octicon octicon-clippy" title="copy to clipboard"></span>
</div>
<pre class="highlight"><code>mvn archetype:generate -B -DgroupId<span class="o">=</span>com.mycompany -DartifactId<span class="o">=</span>my-app -Dversion<span class="o">=</span>1.0-SNAPSHOT -DarchetypeArtifactId<span class="o">=</span>jooby-archetype -DarchetypeGroupId<span class="o">=</span>org.jooby -DarchetypeVersion<span class="o">=</span>1.6.6
</code></pre>
</div>
<p>You might want to edit/change:</p>
<ul>
<li> <p>-DgroupId: A Java package’s name</p> </li>
<li> <p>-DartifactId: A project’s name in lower case and without spaces</p> </li>
<li> <p>-Dversion: A project’s version, like <code class="highlighter-rouge codehilite">1.0-SNAPSHOT</code> or <code class="highlighter-rouge codehilite">1.0.0-SNAPSHOT</code></p> </li>
</ul>
<p>Let’s try it!:</p>
<div class="highlighter-rouge codehilite">
<div class="copy-bar">
<span class="icon-clipboard-big copy-button octicon octicon-clippy" title="copy to clipboard"></span>
</div>
<pre class="highlight"><code>mvn archetype:generate -B -DgroupId<span class="o">=</span>com.mycompany -DartifactId<span class="o">=</span>my-app -Dversion<span class="o">=</span>1.0-SNAPSHOT -DarchetypeArtifactId<span class="o">=</span>jooby-archetype -DarchetypeGroupId<span class="o">=</span>org.jooby -DarchetypeVersion<span class="o">=</span>1.6.6
<span class="nb">cd </span>my-app
mvn jooby:run
</code></pre>
</div>
<p>You should see something similar to this at the end of the output:</p>
<div class="highlighter-rouge codehilite">
<div class="copy-bar">
<span class="icon-clipboard-big copy-button octicon octicon-clippy" title="copy to clipboard"></span>
</div>
<pre class="highlight"><code>INFO <span class="o">[</span>2015-03-19 21:34:00,365] Hotswap available on: <span class="o">[</span>my-app/public, my-app/conf, my-app/target/classes]
INFO <span class="o">[</span>2015-03-19 21:34:00,368] includes: <span class="o">[</span><span class="k">**</span>/<span class="k">*</span>.class,<span class="k">**</span>/<span class="k">*</span>.conf,<span class="k">**</span>/<span class="k">*</span>.properties]
INFO <span class="o">[</span>2015-03-19 21:34:00,369] excludes: <span class="o">[]</span>
INFO <span class="o">[</span>2015-03-19 21:34:00,937] <span class="o">[</span>dev@netty]: App server started <span class="k">in </span>502ms
GET / <span class="o">[</span><span class="k">*</span>/<span class="k">*</span><span class="o">]</span> <span class="o">[</span><span class="k">*</span>/<span class="k">*</span><span class="o">]</span> <span class="o">(</span>anonymous<span class="o">)</span>
listening on:
http://0.0.0.0:8080/
</code></pre>
</div>
<p><strong>Jooby</strong>! is up and running!</p>
<h2>getting started</h2>
<h3>exploring the newly created project</h3>
<p>A new directory was created: <code class="highlighter-rouge codehilite">my-app</code>. Let’s see what it looks like:</p>
<div class="highlighter-rouge codehilite">
<div class="copy-bar">
<span class="icon-clipboard-big copy-button octicon octicon-clippy" title="copy to clipboard"></span>
</div>
<pre class="highlight"><code>.
├── public
| └── <span class="o">(</span>empty<span class="o">)</span>
├── conf
| ├── application.conf
| └── logback.xml
└── src
├── main
| └── java
| └── com
| └── mycompany
| └── App.java
└── <span class="nb">test</span>
└── java
└── com
└── mycompany
└── AppTest.java
</code></pre>
</div>
<p>The <strong>public</strong> folder contains static content like <code class="highlighter-rouge codehilite">*.html</code>, <code class="highlighter-rouge codehilite">*.js</code>, <code class="highlighter-rouge codehilite">*.css</code>, …, <code class="highlighter-rouge codehilite">*.png</code> files.</p>
<p>The <strong>conf</strong> folder contains <code class="highlighter-rouge codehilite">*.conf</code>.</p>
<p>The <strong>src/main/java</strong> folder contains <code class="highlighter-rouge codehilite">*.java</code> files (of course).</p>
<p>The <strong>src/test/java</strong> folder contains unit and integration tests.</p>
<blockquote>
<p><strong>NOTE</strong>: The <code class="highlighter-rouge codehilite">public</code> and <code class="highlighter-rouge codehilite">conf</code> folders are part of the classpath.</p>
</blockquote>
<h4>App.java</h4>
<div class="highlighter-rouge codehilite">
<div class="copy-bar">
<span class="icon-clipboard-big copy-button octicon octicon-clippy" title="copy to clipboard"></span>
</div>
<pre class="highlight"><code>
<span class="kn">import</span> <span class="nn">org.jooby.Jooby</span><span class="o">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">App</span> <span class="kd">extends</span> <span class="n">Jooby</span> <span class="o">{</span> <span class="c1">// 1</span>
<span class="o">{</span>
<span class="c1">// 2</span>
<span class="n">get</span><span class="o">(</span><span class="s">"/"</span><span class="o">,</span> <span class="o">()</span> <span class="o">-></span> <span class="s">"Hello World!"</span><span class="o">);</span>
<span class="o">}</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="n">main</span><span class="o">(</span><span class="kd">final</span> <span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
<span class="n">run</span><span class="o">(</span><span class="nl">App:</span><span class="o">:</span><span class="k">new</span><span class="o">,</span> <span class="n">args</span><span class="o">);</span> <span class="c1">// 3. start the application.</span>
<span class="o">}</span>
<span class="o">}</span>
</code></pre>
</div>
<p>Steps involved are:</p>
<p>1) extend Jooby</p>
<p>2) define some routes</p>
<p>3) call the <code class="highlighter-rouge codehilite">run</code> method</p>
<h3>running</h3>
<p>Open a console and type:</p>
<div class="highlighter-rouge codehilite">
<div class="copy-bar">
<span class="icon-clipboard-big copy-button octicon octicon-clippy" title="copy to clipboard"></span>
</div>
<pre class="highlight"><code>mvn jooby:run
</code></pre>
</div>
<p>The maven plugin will compile the code (if necessary) and start the application.</p>
<p>Of course, you can generate the IDE metadata from Maven or import as a Maven project in your favorite IDE. Afterwards, all you have to do is run the: <code class="highlighter-rouge codehilite">App.java</code> class. After all, this is a plain Java application with a <code class="highlighter-rouge codehilite">main</code> method.</p>
<h3>where to go now?</h3>
<ul>
<li>read the <a href="/doc">documentation</a></li>
<li>check out one of the <a href="https://github.com/search?q=topic%3Astarter+org%3Ajooby-project&type=Repositories" target="_blank">starter projects</a></li>
</ul>
</div>
</div>
<!-- AddToAny BEGIN -->
<div class="row share-network">
<div class="section-content">
<h3>Share</h3>
<div class="a2a_kit a2a_kit_size_32 a2a_default_style" data-a2a-url="http://jooby.org/quickstart" data-a2a-title="">
<a class="a2a_button_twitter" data-text=""></a>
<a class="a2a_button_reddit a2a_counter"></a>
<a class="a2a_button_linkedin a2a_counter"></a>
<a class="a2a_button_facebook a2a_counter"></a>
<a class="a2a_button_google_plus a2a_counter"></a>
</div>
</div>
</div>
<script async src="https://static.addtoany.com/menu/page.js"></script>
<!-- AddToAny END -->
</main>
<footer class="site-footer">
<div class="row">
<p class="pull-left">©2014-2019 <a href="https://twitter.com/joobyproject" target="_blank">The Jooby Project</a>, all rights reserved.</p>
<div class="follow-us pull-right">
<p>Follow us</p>
<a href="https://github.com/jooby-project/jooby" title="Follow us on Github" target="_blank" rel="nofollow"><span class="icon-github-medium-circle"></span></a>
<a href="https://twitter.com/joobyproject" title="Follow us on Twitter" target="_blank" rel="nofollow"><span class="icon-twitter-medium-circle"></span></a>
</div>
</div>
</footer>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="resources/scripts/libs/jquery-2.1.4.min.js"><\/script>')</script>
<script src="resources/scripts/libs/swiper.min.js"></script>
<script src="resources/scripts/application.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-57151281-1', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>