jwt-home.xml 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <messages>
  3. <message id="template">
  4. <div id="top_wrapper">
  5. <div id="top_content">
  6. ${languages}
  7. <div id="top_wt">
  8. <a href="http://www.emweb.be/">
  9. <img src="/css/jwt/emweb_powered.jpg" alt="Emweb" height="22" />
  10. </a>
  11. </div>
  12. </div>
  13. </div>
  14. <div id="banner_wrapper">
  15. <div id="banner_content">
  16. <div id="banner_end"> <div id="banner"><a href="#">JWt</a></div> </div>
  17. </div>
  18. </div>
  19. <div id="main_wrapper" class="home">
  20. <div id="main_content">
  21. <div id="main_menu">
  22. ${menu}
  23. ${sidebar}
  24. </div>
  25. ${contents}
  26. <div class="clearall"></div>
  27. </div>
  28. </div>
  29. <div id="footer_wrapper">
  30. <div id="footer_content">
  31. <div id="footer_copyright">
  32. <a href="http://www.emweb.be/">
  33. <img src="/css/jwt/emweb_large.jpg" height="25" width="101"
  34. alt="Emweb.be" title="emweb.be"/></a>
  35. Solutions for web-based systems<br/>
  36. <a href="http://www.emweb.be/">www.emweb.be</a>
  37. </div>
  38. <div id="footer_menu">
  39. <a href="http://www.webtoolkit.eu/wt/">Home</a>
  40. | <a href="http://www.emweb.be/?page=contact">Contact</a>
  41. </div>
  42. <div id="chat"></div>
  43. <script type="text/javascript">
  44. /*<![CDATA[*/
  45. setTimeout(function() {
  46. loadScript("http://www.webtoolkit.eu/wt/examples/simplechat/chat.js?div=chat", null);
  47. }, 0);
  48. /* ]]> */
  49. </script>
  50. <div class="clearall"></div>
  51. </div>
  52. <script type="text/javascript">
  53. /*<![CDATA[*/
  54. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  55. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  56. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  57. })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  58. ga('create', 'UA-4345578-1', 'auto');
  59. ga('send', 'pageview');
  60. /* ]]> */
  61. </script>
  62. </div>
  63. </message>
  64. <message id="wt">JWt, Java Web Toolkit</message>
  65. <message id="introduction">Introduction</message>
  66. <message id="blog">Blog</message>
  67. <message id="features">Features</message>
  68. <message id="documentation">Documentation</message>
  69. <message id="examples">Examples</message>
  70. <message id="download">Download</message>
  71. <message id="community">Support</message>
  72. <message id="other-language">!Java</message>
  73. <message id="hello-world">Hello world</message>
  74. <message id="charts">Charts</message>
  75. <message id="wt-homepage">Wt homepage</message>
  76. <message id="treeview">Treeview</message>
  77. <message id="git">Git explorer</message>
  78. <message id="chat">Chat</message>
  79. <message id="mail-composer">Mail composer</message>
  80. <message id="figtree">FigTree</message>
  81. <message id="widget-gallery">Widget gallery</message>
  82. <message id="home.news">
  83. <h3><span>News</span></h3>
  84. </message>
  85. <message id="home.latest-news">
  86. <h4><span>Latest News</span></h4>
  87. </message>
  88. <message id="home.historical-news">
  89. <h4><span>Historical News</span></h4>
  90. </message>
  91. <message id="source-browser-link">
  92. <a href="{1}">Browse the source code</a>
  93. </message>
  94. <message id="src-title">
  95. <div>
  96. </div>
  97. </message>
  98. <message id="home.intro">
  99. <h3><span>JWt: an introduction</span></h3>
  100. <p>JWt is a Java library for developing web applications.</p>
  101. <p>The API is <b>widget-centric</b> and uses well-tested patterns of
  102. desktop GUI development tailored to the web. To the developer, it offers
  103. abstraction of many web-specific implementation details and frees
  104. the developer from tedious JavaScript manipulations of HTML and
  105. dealing with cross-browser issues. Instead, with JWt, you can focus on
  106. actual functionality with a rich set of feature-complete widgets.</p>
  107. <p>Unlike old-school page-based frameworks or current-day single-page
  108. JavaScript "frameworks", JWt allows you to create stateful
  109. applications that are at the same time highly interactive (using
  110. WebSockets and Ajax for everything) but still support plain HTML
  111. browsers or web crawlers using automatic <b>graceful degradation or
  112. progressive enhancement</b>. Things that are natural and simple with
  113. JWt would require an impractical amount of development effort
  114. otherwise: switching widgets using animations, while retaining clean
  115. URLs and browser navigation functions, or having a persistent chat
  116. widget open throughout the entire application, that even works in
  117. legacy browsers like Microsoft Internet Explorer 6.</p>
  118. <p>JWt applications can be deployed in a standard Java Servlet
  119. container.</p>
  120. <h4>Feature rich</h4>
  121. <ul>
  122. <li>Layout using <a
  123. href="http://jwt.emweb.be/jwt-gallery/gallery/layout/html-templates">HTML
  124. templates</a> or intelligent <a
  125. href="http://jwt.emweb.be/jwt-gallery/gallery/layout/layout-managers">layout
  126. managers</a> and themable look-and-feel, including support for <a
  127. href="http://getbootstrap.com">Twitter Bootstrap</a> versions 2 or 3.</li>
  128. <li>Create and maintain complexity by using and building reusable and
  129. self-contained widgets.</li>
  130. <li>Comes with a large set of feature-rich widgets that include <a href="http://jwt.emweb.be/jwt-gallery/gallery/forms/">form
  131. widgets</a>, <a
  132. href="http://jwt.emweb.be/jwt-gallery/gallery/trees-tables/mvc-table-views">table</a>
  133. and <a
  134. href="http://jwt.emweb.be/jwt-gallery/gallery/trees-tables/mvc-tree-views">tree
  135. views</a>, <a
  136. href="http://jwt.emweb.be/jwt-gallery/gallery/layout/dialogs">dialogs</a>, <a
  137. href="http://jwt.emweb.be/jwt-gallery/gallery/navigation/popup-menu">popup
  138. menu's</a>, etc...</li>
  139. <li>Unified <a
  140. href="http://jwt.emweb.be/jwt-gallery/gallery/graphics-charts">graphics</a>
  141. APIs, 2D (SVG, HTML5 Canvas, VML, PNG, and PDF) &amp; 3D (client side
  142. WebGL and server-side OpenGL).</li>
  143. <li>Feature rich <a
  144. href="http://jwt.emweb.be/jwt-gallery/gallery/media/pdf-output">HTML
  145. to PDF renderer</a> for dynamic report generation.</li>
  146. <li>Built-in security against common vulnerabilities such as <a
  147. href="http://en.wikipedia.org/wiki/Cross-site_scripting">XSS (Cross-Site Scripting)</a> or <a
  148. href="http://en.wikipedia.org/wiki/Cross-site_request_forgery">CSRF
  149. (Cross-Site Request Forgery)</a></li>
  150. <li>Open-source or commercial license model.</li>
  151. </ul>
  152. <p>By using standard Java and JVMs, JWt applications can benefit from
  153. any existing Java libraries and JVM features including its support for
  154. your favourite scripting language.</p>
  155. <h4>Typical use scenarios:</h4>
  156. <ul>
  157. <li><b>High performance, complex web applications</b> (with a
  158. database backend) that require a responsive and dynamic user
  159. interface and benefit from the use of Java, if only to use Java
  160. refactoring tools while keeping track of ever changing
  161. requirements.</li>
  162. <li>Web applications which maximally benefit from modern browser
  163. capabilities but with <b>graceful degradation</b> to adhere to W3C
  164. accessibility guidelines and be search engine friendly.</li>
  165. <li>Porting of <b>Java desktop applications</b> to the web.</li>
  166. </ul>
  167. </message>
  168. <message id="home.features">
  169. <h3><span>Features</span></h3>
  170. <h4>Core library</h4>
  171. <ul>
  172. <li>Supports major browsers (Firefox/Gecko, Internet Explorer,
  173. Safari, Chrome, Konqueror, and Opera) but also plain HTML browsers
  174. and web crawlers.</li>
  175. <li>Simple deployment in standard Java Servlet 2.4 or 3.0 containers. </li>
  176. <li>No need for IDE plugins: it's plain old Java.</li>
  177. <li>Equal behavior with or without support for JavaScript or Ajax,
  178. as far as possible, by using graceful degradation or progressive
  179. enhancement.</li>
  180. <li>Efficient rendering and low latency.</li>
  181. <li>Support for browser history navigation (back/forward buttons and
  182. bookmarks), pretty URLs with HTML5 History if available, and
  183. search engine optimization with a unified behavior for plain HTML
  184. or Ajax sessions.</li>
  185. <li>Widget centric API that promotes component reuse and increases
  186. productivity.</li>
  187. </ul>
  188. <h4>Event handling</h4>
  189. <ul>
  190. <li>Uses an event listener system for server-side event handling,
  191. comparable to Java GUI frameworks (SWT, Swing).</li>
  192. <li>Listen for keyboard, mouse, focus, scroll or drag&amp;drop events,
  193. and get event details (such as mouse position, modifier buttons, or
  194. keyboard key).</li>
  195. <li>Automatic synchronization Automatically synchronizes form field data
  196. from browser to server and tracks server-side changes to be rendered
  197. in browser.</li>
  198. <li>Integrate with JavaScript libraries</li>
  199. <li>Timed events and server-initiated updates ("server push"), the
  200. latter using Servlet 3.0 async features when deployed in a Servlet
  201. 3.0 container.</li>
  202. </ul>
  203. <h4>Native painting system</h4>
  204. <ul>
  205. <li>Unified 2D painting API which uses the browsers native (vector)
  206. graphics support (inline VML, inline SVG, or HTML5 canvas), or
  207. renders to common image formats (PNG, GIF, ...) or vector formats
  208. (SVG, PDF).</li>
  209. <li>Unified GL-based 3D painting API which leverages WebGL in the browser
  210. or server-side OpenGL (fallback).</li>
  211. </ul>
  212. <h4>Built-in security</h4>
  213. <ul>
  214. <li>Enables continuous use of HTTPS through low bandwidth
  215. requirements.</li>
  216. <li>Built-in Cross-Site Scripting (XSS) prevention. Rendered text is
  217. always filtered against potentially malicious code, making XSS
  218. attacks against JWt applications (close to) impossible.</li>
  219. <li>Not vulnerable to Cross-site Request Forgery (CSRF) because
  220. cookies are not needed for session tracking.</li>
  221. <li>Not vulnerable to breaking the application logic by skipping to
  222. a particular URL, since only those events exposed in the interface
  223. can be triggered.</li>
  224. </ul>
  225. <h4>Testing</h4>
  226. With JWt, event handling code constructs and manipulates a widget
  227. tree, which can easily be inspected by test code. Therefore, a <a
  228. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WTestEnvironment.html">test
  229. environment</a> allows your application to be instantiated and events
  230. to be simulated in absence of a browser, short-cutting the underlying
  231. request/response cycle that would otherwise require a simulated
  232. browser.
  233. <h4>Deployment</h4>
  234. <ul>
  235. <li>Deploy into servlet containers (Tomcat, Jetty) and application
  236. servers (JBoss).</li>
  237. <li>Consists out of (currently four) jar files that need to be
  238. included in the IDE or used in war/ear archives.</li>
  239. <li>No XML, except for JEE's web.xml and message resource bundles.</li>
  240. </ul>
  241. </message>
  242. <message id="home.examples">
  243. <h3><span>Examples</span></h3>
  244. <p>Explore some live examples of JWt below.</p>
  245. <p>
  246. The source code of these (and many more) examples is included in the
  247. JWt source distribution. You may also browse through the source code
  248. of each example using the <a href="#/src">source code viewer</a>.
  249. </p>
  250. </message>
  251. <message id="home.examples.hello">
  252. <div>
  253. <h4 class="example">Hello world!</h4>
  254. <p>
  255. <a href="http://jwt.emweb.be/jwt-hello/" class="run" target="_blank">
  256. <img src="/icons/orange-play.png" style="vertical-align: top"/> Run example
  257. </a>
  258. </p>
  259. <p>This simple example illustrates most of the basic JWt concepts:</p>
  260. <ul>
  261. <li>
  262. How to create a simple Ajax web application that degrades
  263. gracefully to plain HTML post-backs, using <a
  264. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WApplication.html">WApplication</a> that corresponds to a new session.
  265. </li>
  266. <li>
  267. <b>Creating widgets</b>, and adding them to <b>the widget tree</b>.
  268. </li>
  269. <li>
  270. Reacting to events using <b>event listeners</b>.
  271. </li>
  272. <li>
  273. Reading user input and updating widgets.
  274. </li>
  275. </ul>
  276. </div>
  277. </message>
  278. <message id="home.examples.treeview">
  279. <div>
  280. <h4 class="example">Treeview</h4>
  281. <p>
  282. <a href="http://jwt.emweb.be/jwt-treeviewdragdrop/treeviewdragdrop" class="run" target="_blank">
  283. <img src="/icons/orange-play.png" style="vertical-align: top"/> Run example
  284. </a>
  285. </p>
  286. This example illustrates some MVC functionality provided by builtin
  287. Views (WTreeView, WTableView and PieChart) and models.
  288. <ul>
  289. <li>
  290. The example uses <a
  291. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WTreeView.html">WTreeView</a>
  292. and <a
  293. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WTableView.html">WTableView</a> widgets for rendering a Model's
  294. data in a tree or a table.
  295. </li>
  296. <li>
  297. A <a
  298. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WSortFilterProxyModel.html">WSortFilterProxyModel</a>
  299. implement sorting and filtering for another model.
  300. </li>
  301. <li>
  302. These item views have support for drag and drop of a selection of items.
  303. </li>
  304. <li>
  305. You can use nested layout managers (horizontal and
  306. vertical
  307. <a
  308. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WBoxLayout.html">WBoxLayout</a>)
  309. for an automatic window-filling layout, with optional resize handles.
  310. </li>
  311. <li>
  312. Modal (and non-modal) <a
  313. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WDialog.html">dialogs</a> can be used to prompt for input.
  314. </li>
  315. </ul>
  316. </div>
  317. </message>
  318. <message id="home.examples.chart">
  319. <div>
  320. <h4 class="example">Charts example</h4>
  321. <p>
  322. <a href="http://jwt.emweb.be/jwt-charts/charts" class="run" target="_blank">
  323. <img src="/icons/orange-play.png" style="vertical-align: top"/> Run example
  324. </a>
  325. </p>
  326. <p>This example demonstrates the <a
  327. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/chart/package-summary.html">JWt
  328. charting widgets</a> that are implemented on top of JWt's
  329. cross-browser painting API. This painting API uses built-in browser
  330. support for generating high quality graphics. Depending on the
  331. browser, inline VML, inline SVG, HTML5 canvas or a PNG image is used
  332. to render painted contents in a <a
  333. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WPaintedWidget.html">WPaintedWidget</a>.
  334. </p>
  335. <p>This example also demonstrates how a Model can be shared by several
  336. Views, and pass modification events to each connected View. The <a
  337. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WTableView.html"
  338. target="_blank">table view</a> and the chart implement a <i>View</i>
  339. on the same <a
  340. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WAbstractItemModel.html"
  341. target="_blank">item model</a>.</p>
  342. </div>
  343. </message>
  344. <message id="home.examples.composer">
  345. <div>
  346. <h4 class="example">Mail composer</h4>
  347. <p>
  348. <a href="http://jwt.emweb.be/jwt-composer/composer" class="run" target="_blank">
  349. <img src="/icons/orange-play.png" style="vertical-align: top"/> Run example
  350. </a>
  351. </p>
  352. <p>
  353. This example implements a GMail-like mail composer and shows among
  354. other things how to upload files asynchronously, showing a
  355. cross-browser upload progress bar and with support for multiple
  356. files.
  357. </p>
  358. <p>
  359. Some notes about this example:
  360. </p>
  361. <ul>
  362. <li>
  363. The <i>ContactSuggestions</i> class provides auto-completion of
  364. the addressees in the To: Cc: and Bcc: fields. The widget
  365. derives from <a
  366. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WSuggestionPopup.html">WSuggestionPopup</a>.
  367. </li>
  368. <li>
  369. The <i>AttachmentEdit</i> widget uses a <a
  370. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WFileUpload.html">WFileUpload</a>
  371. to asynchronously upload one or more files. The upload <a
  372. href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/eu/webtoolkit/jwt/WProgressBar.html">progress bar</a> will work even in IE6.
  373. </li>
  374. </ul>
  375. </div>
  376. </message>
  377. <message id="home.examples.chat">
  378. <div>
  379. <h4 class="example">Simple Chat</h4>
  380. <p>
  381. <a href="http://jwt.emweb.be/jwt-simplechat/simplechat" class="run" target="_blank">
  382. <img src="/icons/orange-play.png" style="vertical-align: top"/> Run example
  383. </a>
  384. </p>
  385. <p>
  386. This example implements a simple chat client and server. Using
  387. <b>server-initiated updates</b>, you can easily push events from one
  388. user to other users. Server-initiated updates are implemented
  389. using Ajax long polling.
  390. </p>
  391. <p>
  392. When deploying in a Servlet-3.0 container, you can enable its
  393. asynchronous processing and JWt will benefit from this to not tie up
  394. threads for each open connection. But you can also deploy the
  395. application on a Servlet-2.5 container, reverting to blocking
  396. threads. This may be convenient when a Servlet-3.0 container is not
  397. available, e.g. during development.
  398. </p>
  399. <p>
  400. It also illustrates nice benefits of a class-based approach to web
  401. application development: you can easily instantiate the same widget
  402. class multiple times. The SimpleChatClient widget may be reused
  403. just as you reuse basic JWt widgets such as a push button.
  404. </p>
  405. <p>
  406. Interactive applications like these, which allow users to post HTML
  407. text to other users, are notorious for <b>cross-site-scripting (XSS)
  408. attacks</b>: a user enters malicious (javascript) code as part of
  409. his message. When another user renders this message, it may transmit
  410. unwanted private information retrieved from, for example, browser
  411. cookies. JWt prevents such attacks completely, and without any
  412. responsibility to the developer, since widgets such as WText ensure
  413. that what is displayed is only passive text, discarding anything
  414. that is not strictly text.
  415. </p>
  416. </div>
  417. </message>
  418. <message id="home.examples.figtree">
  419. <div>
  420. <h4 class="example">FigTree</h4>
  421. <p>
  422. <a href="http://jwt.emweb.be/figtree/figtree" class="run" target="_blank">
  423. <img src="/icons/orange-play.png" style="vertical-align: top"/> Run example
  424. </a>
  425. </p>
  426. <p>
  427. <a href="http://tree.bio.ed.ac.uk/software/figtree/"
  428. target="_blank">FigTree</a> is an application created by Andrew
  429. Rambaut for visualizing
  430. <a href="http://en.wikipedia.org/wiki/Phylogenetic_tree"
  431. target="_blank">phylogenetic trees</a> estimated from molecular
  432. data. It is a Java Swing application with a basic UI available as a
  433. Java applet.</p>
  434. <p>
  435. In no more than 500 lines Java code, we rehashed the applet version
  436. into a real web application, reusing much of the existing
  437. application. In fact, we needed only a single line code change in
  438. the reused Swing code.
  439. </p>
  440. <p>
  441. The source code of this example is not part of the JWt source
  442. distribution, but you can find it (including the web version which
  443. we contributed) on
  444. the <a href="http://code.google.com/p/figtree/source/checkout"
  445. target="_blank">FigTree project page</a>.
  446. </p>
  447. <p>
  448. See also
  449. our <a href="#/blog/2010/10/25/fun_with_jwt_and_swing__webgraphics2d"
  450. target="_blank">blog post</a> on porting this application.
  451. </p>
  452. </div>
  453. </message>
  454. <message id="home.examples.widgetgallery">
  455. <div>
  456. <h4 class="example">Widget gallery</h4>
  457. <p>
  458. <a href="http://jwt.emweb.be/jwt-gallery/gallery" class="run" target="_blank">
  459. <img src="/icons/orange-play.png" style="vertical-align: top"/> Go to widget gallery
  460. </a>
  461. </p>
  462. <p>
  463. This example demonstrates most widgets provided by Wt, in addition to
  464. other aspects such as event handling and layout classes. Useful as an
  465. executable reference to widgets and features provided by the library.
  466. </p>
  467. </div>
  468. </message>
  469. <message id="home.download">
  470. <h3><span>Download</span></h3>
  471. </message>
  472. <message id="home.download.license">
  473. <h4>License and Pricing</h4>
  474. <p>JWt may be used using either an Open Source or a Commercial License.</p>
  475. <p>If you wish to use the library using the <b>GNU General Public
  476. License (GPL)</b>, you may build a web application with JWt and deploy
  477. it, but per the terms of the GPL, you are obliged to make the source
  478. code available to anyone who you give the application to install the
  479. application on its own server. This also applies to redistribution of
  480. the JWt library, in original or modified form.</p>
  481. <p><b>The Commercial License</b> has no such limitations: you may
  482. redistribute applications developed with JWt without needing to
  483. redistribute the source code. The license is a royalty-free, perpetual
  484. license for one developer to use the API of JWt for application
  485. development, using the latest version of JWt or any version released
  486. during one year, and costs &euro;599.
  487. </p>
  488. </message>
  489. <message id="home.download.other">
  490. <p>As of JWt 3.1.11, JWt is also available in Maven and can be added
  491. to a project using:
  492. <pre class="fragment">&lt;dependency&gt;
  493. &lt;groupId&gt;eu.webtoolkit&lt;/groupId&gt;
  494. &lt;artifactId&gt;jwt&lt;/artifactId&gt;
  495. &lt;version&gt;3.1.11&lt;/version&gt;
  496. &lt;/dependency&gt;</pre></p>
  497. <h4>System requirements</h4>
  498. For building and using the latest version of JWt, you should follow the <a
  499. href="http://www.webtoolkit.eu/jwt/latest/doc/userguide/userguide.html#getting-started"> Getting started tutorial
  500. </a>, this tutorial explains on how to build JWt and run the examples.
  501. <h4>Git repository</h4>
  502. <a href="https://github.com/kdeforche/jwt"><img style="display: block; width: 80px; float: right" src="https://github.com/github/media/blob/master/octocats/octocat.png?raw=true"></img></a>
  503. <p>If you want to keep track of the latest changes, or participate in
  504. JWt development, you may want to work from
  505. the <a href="https://github.com/kdeforche/jwt">github
  506. repository</a>.</p>
  507. <p>
  508. <div class="fragment">
  509. <pre class="fragment">$ git clone git://github.com/kdeforche/jwt.git</pre>
  510. </div>
  511. </p>
  512. </message>
  513. <message id="home.download.packages">
  514. <h4><span>Available packages</span></h4>
  515. </message>
  516. <message id="home.download.version"><b>Version</b></message>
  517. <message id="home.download.date"><b>Date</b></message>
  518. <message id="home.download.description"><b>Description</b></message>
  519. <message id="home.community">
  520. <h3><span>Support</span></h3>
  521. <h4>Support and Training</h4>
  522. <p>
  523. You can get <a href="http://www.emweb.be/support">support and
  524. training</a> directly from the library authors, with a
  525. guaranteed three-day response time.
  526. </p>
  527. <p>
  528. Community help is available in the <a
  529. href="http://redmine.webtoolkit.eu/projects/wt/boards">public
  530. forums</a>.
  531. </p>
  532. <p>
  533. To get up to speed with JWt, you may also obtain <a
  534. href="http://www.emweb.be/support">training</a> directly from
  535. the library authors.
  536. </p>
  537. <h4>Authors</h4>
  538. <p>
  539. JWt is mainted by <a href="http://www.emweb.be/">Emweb bvba</a>, and
  540. is derived from the latest version of its sibling C++ solution,
  541. <a href="http://www.webtoolkit.eu/wt">Wt</a>.
  542. </p>
  543. <h4>Wiki</h4>
  544. <p>
  545. There is a community-run <a
  546. href="http://redmine.webtoolkit.eu/projects/jwt/wiki">JWt Wiki</a> where
  547. you may share tips, notes and experiences using JWt.
  548. </p>
  549. <h4>Contributions</h4>
  550. <p>
  551. User contributions are welcomed, ranging from simple patches to
  552. widgets, widget sets, and core improvements.
  553. </p>
  554. <p>
  555. However, because JWt is dual-licensed under an Open Source and
  556. commercial license, and to legally protect the code base of JWt as a
  557. whole by one entity without having to worry about the copyrights for
  558. different pieces, we require a copyright assignment from contributors
  559. to <a href="http://www.emweb.be/">Emweb</a> before
  560. accepting the contribution.
  561. </p>
  562. </message>
  563. <message id="home.other-language">
  564. <h3><span>!Java ?</span></h3>
  565. <p>You like the functionality, but do not grok Java for your project?</p>
  566. <p>Do not despair. JWt exists in a native variant or through bindings
  567. in other languages:
  568. <ul class="languages">
  569. <li>
  570. <div>
  571. <img class="language-icon" src="/icons/clojure-logo.png" alt="Clojure"></img>
  572. Leveraging the JVM's support for other languages, such
  573. as <b>Clojure</b>, a LISP variant, Ralph Moritz is experimenting
  574. with <a href="http://lispetc.posterous.com/hello-jwt-from-clojure">using
  575. JWt from within Clojure</a>, documenting his experience in his blog
  576. and eventually developing a small support library.
  577. </div>
  578. <br style="clear: both" />
  579. </li>
  580. <li>
  581. <div>
  582. <img class="language-icon" src="/icons/jython-logo.png" alt="Jython"></img>
  583. Albert Cervera i Areny is experimenting to use JWt from <b>Jython</b>,
  584. another language running on the JVM. He documents how to create and run
  585. the "Hello World!" program in Jython in <a href="http://www.nan-tic.com/en/from-pyqt-to-jythonjwt-setting-up-the-environment">this blog post</a>.
  586. </div>
  587. <br style="clear: both" />
  588. </li>
  589. <li>
  590. <div>
  591. <img class="language-icon" src="/icons/cpp-logo.jpg" alt="C++"></img>
  592. If you prefer <b>C++</b>, you should consider
  593. using <a href="http://www.webtoolkit.eu/wt">Wt</a>, the C++ version, which is developed and
  594. maintained together with the Java version, and from which the Java
  595. version is derived. It comes with application server included.
  596. </div>
  597. <br style="clear: both" />
  598. </li>
  599. <li>
  600. <div>
  601. <img class="language-icon" src="/icons/ruby-logo-R.png" alt="Ruby"></img>
  602. Richard Dale is
  603. maintaining <a href="http://github.com/rdale/wtruby/tree/master">WtRuby</a>,
  604. <b>Ruby</b> bindings to Wt, using the same framework used for generating Ruby
  605. bindings to Qt and KDE.
  606. </div>
  607. <br style="clear: both" />
  608. </li>
  609. </ul>
  610. </p>
  611. </message>
  612. <message id="home.documentation">
  613. <h3><span>Documentation</span></h3>
  614. <h4>Build and install</h4>
  615. <p>A <a href="http://www.webtoolkit.eu/jwt/latest/doc/userguide/userguide.html" target="_blank">User Guide</a> is available (in a new window). This user guide consists of a <a href="http://www.webtoolkit.eu/jwt/latest/doc/userguide/userguide.html#_library_overview" target="_blank">library overview</a> section and a <a href="http://www.webtoolkit.eu/jwt/latest/doc/userguide/userguide.html#getting-started" target="_blank">getting started</a> section.</p>
  616. <h4>Introduction and tutorials</h4>
  617. <p>Learn about the benefits of using JWt compared to traditional web
  618. application frameworks using our <a
  619. href="http://www.webtoolkit.eu/doc/Wt-WhitePaper.pdf">white paper</a>.</p>
  620. <p>More introductory material and tutorials are currently lacking. In
  621. the mean time, you can use the documentation available for <a
  622. href="http://www.webtoolkit.eu/wt/documentation">the C++ library</a>, as they are the same
  623. code base.</p>
  624. <h4>Reference manual</h4>
  625. <p>There is a <a href="http://www.webtoolkit.eu/jwt/latest/doc/javadoc/"
  626. target="_blank"> reference manual (in a new window)</a>, generated
  627. from the source code using javadoc.
  628. </p>
  629. <h4>Wiki</h4>
  630. <p>
  631. There is a community-run <a
  632. href="http://redmine.webtoolkit.eu/projects/jwt/wiki">JWt Wiki</a> where
  633. you may share tips, notes and experiences using JWt.
  634. </p>
  635. </message>
  636. <message id="srcview.title.JAVA.">
  637. <div class="srcviewtitle">
  638. <h2>Source code for JWt examples</h2>
  639. <p>
  640. Browse below the source code for all examples included in
  641. <a href="http://www.webtoolkit.eu/jwt">JWt</a>.
  642. </p>
  643. </div>
  644. </message>
  645. <message id="srcview.title.">JWt examples</message>
  646. <message id="srcview.title.JAVA.hello">
  647. <div class="srcviewtitle">
  648. <h2>Source code of the <i>Hello world</i> example</h2>
  649. <p>
  650. Browse below the source code for JWt's
  651. <a href="http://www.webtoolkit.eu/jwt/examples/hello_world">
  652. Hello world</a> example.
  653. </p>
  654. </div>
  655. </message>
  656. <message id="srcview.title.hello">Example: Hello world</message>
  657. <message id="srcview.title.JAVA.hello">
  658. <div class="srcviewtitle">
  659. <h2>Source code of the <i>Hello world</i> example</h2>
  660. <p>
  661. Browse below the source code for JWt's
  662. <a href="http://www.webtoolkit.eu/jwt/examples/hello_world">
  663. Hello world</a> example.
  664. </p>
  665. </div>
  666. </message>
  667. <message id="srcview.title.hello_world">Example: Hello world</message>
  668. <message id="srcview.title.JAVA.charts">
  669. <div class="srcviewtitle">
  670. <h2>Source code of the <i>Charts</i> example</h2>
  671. <p>
  672. Browse below the source code for JWt's
  673. <a href="http://www.webtoolkit.eu/jwt/examples/charts">
  674. Charts</a> example.
  675. </p>
  676. </div>
  677. </message>
  678. <message id="srcview.title.charts">Example: Charts</message>
  679. <message id="srcview.title.JAVA.treeviewdragdrop">
  680. <div class="srcviewtitle">
  681. <h2>Source code of the <i>Treeview</i> example</h2>
  682. <p>
  683. Browse below the source code for JWt's
  684. <a href="http://www.webtoolkit.eu/jwt/examples/treeview">
  685. Treeview</a> example.
  686. </p>
  687. </div>
  688. </message>
  689. <message id="srcview.title.treeviewdragdrop">Example: Treeview</message>
  690. <message id="srcview.title.JAVA.composer">
  691. <div class="srcviewtitle">
  692. <h2>Source code of the <i>Mail composer</i> example</h2>
  693. <p>
  694. Browse below the source code for JWt's
  695. <a href="http://www.webtoolkit.eu/jwt/examples/composer">
  696. Mail composer</a> example.
  697. </p>
  698. </div>
  699. </message>
  700. <message id="srcview.title.composer">Example: Mail composer</message>
  701. <message id="srcview.title.JAVA.simplechat">
  702. <div class="srcviewtitle">
  703. <h2>Source code of the <i>Chat</i> example</h2>
  704. <p>
  705. Browse below the source code for JWt's
  706. <a href="http://www.webtoolkit.eu/jwt/examples/simplechat">
  707. Chat</a> example.
  708. </p>
  709. </div>
  710. </message>
  711. <message id="srcview.title.simplechat">Example: Chat</message>
  712. <message id="srcview.title.JAVA.widgetgallery">
  713. <div class="srcviewtitle">
  714. <h2>Source code of the <i>Widget gallery</i> example</h2>
  715. <p>
  716. Browse below the source code for JWt's
  717. <a href="http://www.webtoolkit.eu/jwt/examples/widget_gallery">
  718. Widget gallery</a> example.
  719. </p>
  720. </div>
  721. </message>
  722. <message id="srcview.title.widgetgallery">Example: Widget gallery</message>
  723. </messages>