Documentation

Trace:

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
jvx:features [2018/11/27 10:19]
admin created
jvx:features [2020/06/08 13:03] (current)
cduncan [More Features]
Line 1: Line 1:
 +~~Title: Features~~
 ~~NOTRANS~~ ~~NOTRANS~~
  
-== UI platform independent ​==+===== UI Platform Independent =====
  
-Write UI sourcce ​code for your screens once and start the application as DesktopWeb or Mobile ​solution.+Write UI source ​code for your screens once and start the application as a web, mobile, or desktop ​solution.
  
 +<WRAP group>
 +<WRAP column 30%>
   * **Swing** \\ Applet, Webstart or Desktop   * **Swing** \\ Applet, Webstart or Desktop
   * **Vaadin** \\ HTML5/Ajax   * **Vaadin** \\ HTML5/Ajax
   * **iOS and Android** \\ Native App for Smartphone, Tablet   * **iOS and Android** \\ Native App for Smartphone, Tablet
 +</​WRAP>​
 +<WRAP column third>
 +<​carousel infinite=true&​dots=true&​speed=500&​fade=true&​adaptiveHeight=true>​
 +  * {{:​jvx:​gal_android_vaadin_status.png?​nolink|Vaadin}}
 +  * {{:​jvx:​gal_charts.png?​nolink|Charts}}
 +  * {{:​jvx:​gal_android_vaadin_projekte.png?​nolink|Vaadin}}
 +  * {{:​jvx:​gal_charts_swing.png?​nolink|Swing}}
 +  * {{:​jvx:​gal_charts.png?​nolink|Charts}}
 +  * {{:​jvx:​gal_chrome_vaadin_projekte.png?​nolink|Vaadin}}
 +  * {{:​jvx:​gal_erp_customers.png?​nolink|ERP}}
 +  * {{:​jvx:​gal_erp_statistic_full.png?​nolink|Statistics}}
 +  * {{:​jvx:​gal_charts_vaadin.png?​nolink|Charts}}
 +  * {{:​jvx:​gal_erp_statistic.png?​nolink|ERP}}
 +  * {{:​jvx:​gal_exchange_contacts.png?​nolink|Exchange}}
 +  * {{:​jvx:​gal_iOS_app_menu.png?​nolink|iOS}}
 +  * {{:​jvx:​gal_iOS_app_projects.png?​nolink|iOS}}
 +  * {{:​jvx:​gal_iOS_app_status.png?​nolink|iOS}}
 +  * {{:​jvx:​gal_iPad_vaadin_projects.png?​nolink|Vaadin}}
 +  * {{:​jvx:​gal_iPad_vaadin_status.png?​nolink|Vaadin}}
 +  * {{:​jvx:​gal_jvxswing_browser.png?​nolink|Browser}}
 +  * {{:​jvx:​gal_master_detail_detail.png?​nolink|Master-Detail}}
 +  * {{:​jvx:​gal_tree_swing.png?​nolink|Tree}}
 +  * {{:​jvx:​gal_tree_vaadin.png?​nolink|Tree}}
 +</​carousel>​
 +</​WRAP>​
 +</​WRAP>​
 +\\ 
 +\\ 
 +\\ 
  
-== Quick Easy development ​==+===== Quick and Easy Development =====
  
-== How does it work? ==+<WRAP group> 
 +<WRAP column column>​ 
 +Client Code: 
 +<file java> 
 +private void initializeUI() throws Exception ​ { 
 +  UITable table new UITable();​ 
 +  table.setDataBook(rdbContacts);//​bind to UI model 
 +  add(table, UIBorderLayout.CENTER);​ 
 +  setTitle("​Contacts"​);​ 
 +  setSize(new UIDimension(600,​ 500)); 
 +
 +private void initializeModel() throws Throwable { 
 +  RemoteDataBook rdbContacts ​new RemoteDataBook();​ 
 +  rdbContacts.setDataSource(getDatasource());​ // bind to DAO „contacts“ 
 +  rdbContacts.setName("​contacts"​);​  
 +  rdbContacts.open();​ 
 +
 +</​file>​
  
-== All Features ==+Server Code:
  
 +<file java>
 +public IStorage getContacts() throws Exception {
 +  DBStorage dbsContacts = (DBStorage)get("​contacts"​);​
 +  if (dbsContacts == null) {
 +    dbsContacts = new DBStorage();​ // Automatic DAO
 +    dbsContacts.setDBAccess(getDBAccess()); ​
 +    dbsContacts.setWritebackTable("​CONTACTS"​);​
 +    dbsContacts.open();​
 +    put("​contacts",​ dbsContacts);​
 +  }
 +  return dbsContacts; ​
 +}
 +</​file>​
 +</​WRAP>​
 +<WRAP column third>
 +\\ 
 +\\ 
 +**You don't need more code!**
 +
 +You write just a few lines of code for an application that manages your contacts.
 +
 +  * **initializeUI()** \\ Initialize an UITable, bind it to the model, and add it to the screen.
 +  * **initializeModel()** \\ Instantiate model for contacts, bind it to the server, and the DAO "​contacts"​.
 +  * **getContacts()** \\ Instantiate DAO "​contacts",​ initialize it with database and table "​CONTACTS"​.
 +</​WRAP>​
 +</​WRAP>​
 +
 +===== How Does It Work? =====
 +
 +<WRAP group>
 +<WRAP column column>
 +{{:​jvx:​jvx_features.png?​nolink |Screenshots}}
 +</​WRAP>​
 +<WRAP column third>
 +//JVx' DAO class DBStorage analyzes the data model of table "​CONTACTS"​. This detects all data types for all columns and all foreign keys to master data tables. This metadata information is sent to the client model.
 +\\ 
 +\\ 
 +The dynamic client model, for all Daten data-bound GUI controls, uses this metadata.
 +Because of this mechanism, all input fields get a specific data type and size directly from the database. Dropdown lists are created because of foreign key references to master data tables, etc.
 +\\ 
 +\\ 
 + As a result, no further source code is necessary.\\ **Covention Over Configuration**
 +\\ 
 +Any deviation from the standard behavior can be coded accordingly.
 +//</​WRAP>​
 +</​WRAP>​
 +
 +===== All Features =====
 +
 +==== General ====
 +
 +  * **OpenSource Framework**\\ Apache 2.0 license
 +  * **Full Stack Framework**
 +    * Full application stack, starts with GUI and ends with Persistence
 +    * Simple APIs, short training period
 +    * Well documented
 +    * Easy to extend
 +  * **Database Independent**
 +    * Oracle, DB2, MS SQL, MySql/​MariaDB,​ PostgreSql, HSQLDB, Hana, Tibero, etc.
 +  * **Applicationserver Independent**
 +    * Any servlet container, e.g., Tomcat, Wildfly, etc.
 +  * **Multi-Tier Architecture**
 +
 +
 +==== GUI Features ====
 +
 +  * **GUI Technology Independent**
 +      * Web (vaadin)
 +      * Mobile (native iOS, Android)
 +      * Desktop (Swing, JavaFX)
 +      * Headless (Testing)
 +  * **Standardized Dynamic Model for All Data-Bound GUI Controls**
 +      * Uses persistence metadata as base datatype, data size, datatype dependent editors (e.g., "​Date"​ -> Date editor, "​Master data" -> Dropdown list (= Combobox)
 +      * Editor (Number, Date, Dropdown), Table, Tree, Chart
 +
 +
 +==== GUI/Server Features ====
 +
 +  * **Flexible Authentication Management With Different ​
 +Security Managers**\\ Database table, NTLM, LDAP, XML
 +  * **CRUD Triggers on Client & Application Server**\\ Before/​After Insert, Update, Delete, Select, …
 +  * **Event & Listener Concept**
 +  * **Multilingual Support**
 +  * **Lazy Loading**
 +    * Only visible GUI information are loaded
 +    * No paging, lazy loading is integrated in GUI controls -> scrollbar
 +    * Process millions of records
 +  * **Flexible Application Frame**
 +    * Integrated in the framework
 +    * Contains Toolbar, Menu, Login/out, Change password, Help, About, Save, Reload, …
 +    * Can be easily extended and adapted to the requirements of the application
 +    * CSS styling, Web appliaction frame
 +    * Fully configurable application frame through interfaces
 +
 +==== More Features ====
 +
 +  * **Online Help System for Web & Desktop applications**\\ Table of Contents, Search, HTML
 +  * **User and Role Management**\\ Database Tables, If (Rolle=Admin) Then Show Data
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information