Im Zuge unseres JVx Vortrages, bei der Java User Group München, wurde berichtet, daß im Download der FirstApp die Konfiguration "config.xml" nicht inkludiert ist. Nach kurzer Analyse wurde festgestellt, daß auch die Server Konfiguration nicht enthalten ist.
Das Fehlen der Dateien ist aufgrund der Schritt für Schritt Anleitung kein großes Problem und kann rasch behoben werden!
Die Ursache für das Problem war eine fehlerhafte build Konfiguration. Diese wurde umgehend behoben und die aktualisierte FirstApp steht bereits zum Download bereit. Im Zuge des Updates wurde auch gleich die aktuelle Release 0.8 von JVx inkludiert.
JVx 0.8 ist out now!
We put much time and work into the new release. It contains almost 100 improvements!
But before we go into the details, it should be mentioned that JVx is now hosted on SourceForge. This step was particularly important to us, in order to be able to develop together with our Community.
Our Forum contains detailed instructions for working together.
We appreciate any help.
Download JVx 0.8 here
What's new?
- API changes
- We removed set/getTableColumnNames, set/getTreeColumnNames, set/getEditorColumnNames and introduced ColumnView. Now it is possible to set a column view per UI control e.g.: ITable, ITree, IEditor, null (ALL)
Old:
rdbInvoice.getRowDefinition().
setTableColumnNames(new String [] { "POS", "PRICE"});
New:
rdbInvoice.getRowDefinition().
setColumnView(null, new ColumnView("POS", "PRICE"));
- DBAccess has now a static method, setAutomaticLinkColumnNameTranslation, to translate the automatic link column names into a user-defined name.Default:
tmpAutoLinkColumnNames.put("*_id", "*");
tmpAutoLinkColumnNames.put("*_ID", "*");
- Changed, automatic, visible column detection from case insensitive to case sensitive, for compatibility reasons!Old:
setDefaultIgnoredColumnNames("*_ID");
New:
setDefaultIgnoredColumnNames("*_ID", "*_id");
Default:
"*ID", "*id", "*_ID", "*_id", "*_INTERN", "*_intern"
- Renamed countRows to getEstimatedRowCount in IStorage
- MetaData handlingReduced client/server requests,
Reduced creation loops on server side,
Caching for sub storages,
Fixed Nullable column detection,
Client Cache roles,
Label detection,
Split Client and Server MetaData usage
- SerializerUniversalSerializer is now the standard serializer,
Support for async serialization with new TypeCache,
Bean packages unified,
New init method for ISerializer,
The serializer name is now included in the connection properties
- JNDI supportServer is now available via JNDI or Singleton
- DB supportHSQLDB driver is now registered,
HSQLDB locking mechanism fixed,
Derby locking support,
close open statements,
Check constraint detection with 'OR', 'AND', 'IN',
Automatic Link Column Name detection works now DB independent,
Fetch optimization (reduced method calls),
BigDecimal DataType contains always a BigDecimal - DB independent
- SecurityDifferend Password algorithms (SecureHash),
Automatic Security detection of lifecycle objects,
XmlSecurityManager now supports more than 1 User
- Smaller changes and BugfixesAll details are documented in our Support System or the ChangeLog
Today, we released version 0.2 of our Android AddOns. The release contains some new features for logging, property handling and list formatting.
Download the new release from here (ChangeLog and javadoc).
In den nächsten Wochen sind wir unterwegs um JVx vorzustellen. Vielleicht ist der eine oder andere Termin für Sie interessant:
Für die Teilnahme an einem oder mehreren Terminen ist eine Anmeldung erforderlich.
JVx is written in Java and you can create Desktop Applications (Swing or QTJambi), Rich Internet Applications (Applet or Webstart or Ajax/HTML) and Mobile Android Applications. You develop an Application once and start it with different technologies - Single Sourcing!
But what about the iPhone?
Native iPhone apps are written in Obective-C, C or other supported programming languages. Java is not supported - at the moment.
We are currently developing iOS AddOns that makes it possible to create native iOS apps which uses JVx business logic. The AddOns includes object serialization, connection handling and simple model implementations.
Develop your JVx Business Application, use the same source code for your Desktop and/or Web Application and use the same business logic for your Mobile Device(s).
One framework for different plattforms and different technologies.
And everything is Open Source!
The source code of JVx is now hosted on SourceForge!
As a little bonus, we gave following packages in the repository:
- JVx Core
- JVx Android AddOns
- JVx Swing UI
- JVx QTJambi UI
- JVx Web UI
- JVx Flex client and server (proof of concept)
And finally, we decided to release the complete source code of our JVx .NET AddOns. The source code was not yet available and is still in development.
We look forward for many helping hands!
We decided to set up the public JVx source repository, before we release the next version. Because of this decision, we postponed the 0.8 release.
The repository will be available in the coming days. The current release date for JVx 0.8 is October, 11th.
What's new in the next release?
Check out the roadmap for detailed information!
Some highlights:
- New MetaData Caching
- Security checks for server calls
- Different password algorithms
- WebUI support
- DB relevant bugfixes
JVx defines a technology independent User Interface, with Interfaces. Each technology has to implement this interfaces for its components and controls, to be compatible with JVx. We have implemented all this interfaces for Swing.
In addition we have created some swing components with special features for business applications. This components are simple extensions to existing swing components and are supported from any Look and Feel. They can be used in any swing application with or without the whole JVx framework.
We will show here some of this components:
- DesktopPane with tab or frame mode
Switch between tab and frame view, Closable tabs (works with java 1.5 and is LaF independent), Drag and Drop Tabs, Tab navigation with keyboard, Modal frames, Background image.
 Frame mode
|
|
 Tab mode
|
|
 Desktop Background |
|
- ComboBoxes with user-defined popup components
A base implementation of a ComboBox called ComboBase. With this combo you can build your own ComboBox for e.g. input first and last name in separate fields. We implemented a date chooser and a table selector (header is:
 Date Combo
|
|
 Table Combo
|
|
- Table with load-on-demand model and ready-to-use cell editors/renderers
A table which uses an IDataBook implementation as model (e.g. MemDataBook) and shows cell editors and renderers dependent of the cell data types, e.g. a table with image renderer and multiple choice editor/renderer
 Table with renderer and editor
|
|
Following editors/renderer are available: Text, Number (only numbers are allowed), Date, Multiple Choice, Image |
|
- Button
A standard button and a toggle button with support for mouse-over borders.
- Icon
A special icon which supports image stretching and alignment.
Our implementation includes not only Swing components. It also contains some useful layouts:
- FormLayout
Anchor based layouting. Supports margins, stretching, gaps, ... It is designed for simple and complex forms.
- BorderLayout
Supports margins.
- SequenceLayout
Supports component stretching, component orientation, intelligent wrapping.
If you are interested in JVx, leave a comment or join our community.
You are welcome!
Einen etwas anderen Ansatz als JVx, um UIs mit unterschiedlichsten Technologien zu erstellen, verfolgt Jspresso.
Es handelt sich um ein Open Source Framework für die Erstellung von n-Tier Anwendungen wobei am Server auf Spring in Kombination mit Hibernate zurückgegriffen wurde. Die unterschiedlichen UI Implementierungen unterscheiden sich teils sehr stark voneinander und wirken etwas sperrig. Die Lösungen sind teilweise sehr interessant, es fehlt jedoch häufig an Erleichterung, da sehr viel Codierarbeit notwendig ist um z.B die Daten von der Datenbank ans GUI zu transportieren.
Der Begriff Single Sourcing wird nicht nur von JVx geprägt! Auch die Rich Ajax Platform (RAP) aus dem Eclipse Ökosystem stellt einen Lösungsansatz bereit. Der Grundgedanke ist der selbe: Write once - "run everywhere". Auf den Punkt gebracht: Eine Anwendung läuft sowohl als Desktop Applikation als auch im Browser als HTML/Ajax Applikation - ohne eine Veränderung am Source Code durchführen zu müssen.
Keine Frage. Mit dem Eclipse Ökosystem erhält man ein mächtiges Werkzeug mit dem nahezu jeder Wunsch in Software umgesetzt werden kann. Der Preis dafür darf jedoch nicht außer acht gelassen werden. Denn die Einarbeitung in die Technologie und die Menge an APIs ist enorm und mit nicht zu unterschätzendem Aufwand verbunden. Weiters existieren sehr starke Abhängigkeiten zwischen den APIs und den eingesetzten Bibliotheken. Die Wartung von Anwendungen und Projekten wird durch die Komplexität nicht gerade vereinfacht. Im Grunde bekommt man sehr viele Möglichkeiten geschenkt, muss aber die Folgen der Komplexität sowohl während der Entwicklung als auch bei der Wartung in Kauf nehmen.
Wenn es um Vereinfachung und Überschaubarkeit geht, dann führt an JVx kein Weg vorbei! Das Framework ist einerseits leicht zu erlernen und andererseits verkürzt es die Entwicklung von Datenbank lastigen Anwendungen. Außerdem verzichtet JVx auf Abhängigkeiten und vereinfacht dadurch sowohl Entwicklung als auch Wartung. Zusätzlich zu Single Sourcing erhält man mit JVx ein Full-Stack Application Framework unter anderem mit RPC und Session Management. Und mit den AddOns für Android und .NET stehen die Türen für mobile Geräte weit offen.