Jseamless

jSeamless
jSeamless is a UI abstraction open-source project in Java created by Matt Hicks (http://matthicks.com) and has since broadened to being supported by additional individuals as well as corporations. The project began in early 2006 with a prototype utilizing both HTML and Swing implementations. This prototype utilized a Factory methodology for creating instances of UI Components. This was a flawed methodology as the UI could not be persisted and then later loaded into a different implementation. Further, this created significant complications for custom Components as it would be required to create Classes that extend the abstract Factories rather than simply extending beans. The initial prototype can still be viewed in SVN (http://svn.jseamless.org/framework/tags/0.1/).

Many iterations of development have been created since the initial prototype towards 1.0. The project, as of this writing, is preparing to release 1.0 Beta 7, which should be the final beta release before the project begins issuing Release Candidates.

What is jSeamless?
So what is jSeamless? The technical answer is jSeamless is a UI abstraction layer for Java to allow developers to write code for any platform and any environment (Web, Desktop, Mobile, etc.) without having to know ahead of time what those will be. This is an API for Java developers to simplify application development.

The great thing about a UI abstraction is that the decision of deployment no longer has to be decided ahead of time. Further, development is no longer limited to deployment in a single environment. For example, traditionally if you were to develop an application as desktop application and then later decided you wanted to make that application available on the web, this would require in most cases a complete re-write of the UI and in many cases major changes to the underlying business code as well to make it all function in the web environment. With jSeamless this is no longer a problem. Since the developer is using a UI abstraction instead of environment specific UI there is freedom to deploy in any or multiple environments at any time without changing a single line of the UI code.

Where jSeamless particularly shines is in web development. For years web developers have been bound to writing HTML, JavaScript, CSS, JSPs, Servlets, Custom Tags, etc., but jSeamless removes the necessity of developers having to write in anything but Java by having all components defined as basic beans and implementations utilizing those beans. The structure of jSeamless is very similar to that of Swing. This should provide a very quick learning curve for anyone coming from a Swing or AWT background.

jSeamless is a revolutionary new way of doing UI development for applications. However, it doesn't stop there. jSeamless goes much further to provide features in a UI framework that exceed that of any known Java UI framework. There are dozens of unique components that make up the core functionality of jSeamless. There are many containers to handle any layout needs your application might have. Every Component has a Style object associated with it that can be shared across multiple components and can be utilized hierarchically to inherent from other Styles. There are many special effects that can automatically be executed or manually executed via a play(effect) method on each Component. Components throw events for every conceivable interaction from the user, giving the developer the control to interact in any way desired with the user.

Whether you're developing a web application, desktop application, or cell-phone application, a game or office application, a small project or a large product jSeamless can fulfill your needs.

Licensing
jSeamless is released under the BSD License

Web Site
With the first official beta of jSeamless (http://jseamless.org), the project made a bold move and released the web site actually developed with the framework itself. This was intended to show a good example of jSeamless in action and to show early on the stability of the product. The main implementation being utilized for the web site has been a Flex 2 implementation.

Issue Tracking
The project uses Trac for bug and enhancement tracking as well as a wiki for the project (http://trac.jseamless.org). Though the development team is small, their is corporate backing supporting the open-source development of the project.

Implementations
In jSeamless the idea of implementations are used to create this concept of UI abstraction. The core jSeamless framework is a relatively simple bean structure of Components, but are connected to an advanced system of connectivity to an underlying framework that provides the visual representation of the basic structure. This allows development of complete applications without initially having to consider whether the project will be web-based or desktop-based.

Further, companies or individuals utilizing jSeamless are free to create their own implementations of jSeamless that, though it is always encouraged to be contributed back, is not a requirement.

Remote Communication Implementation
The Remote Communication Implementation defines a server-side implementation that connects to the framework itself, while maintaining a protocol for communication to it remotely. This is an extremely powerful feature as implementations that must utilize a client/server architecture (such as browser-based technologies) need only implement a client that connects to the server. Communication with the server is currently supported via HTTP (Ajax style communication) as well as direct Socket connection. Additional communication layers may be provided in the future.

The actual protocol is defined on the wiki: http://trac.jseamless.org/wiki/JSLRemoteProtocol

This is also a very powerful feature as implementations of jSeamless are no longer limited strictly to Java but could be done in completely different languages and simply communicated via the protocol back to the Java-powered server.

Flex Implementation
The Flex implementation of jSeamless was the first one written as part of the final 1.0 design of the framework. Flex provides an amazing level of power and functionality on the client via effects, sound, and video that go well beyond what most UI's can provide. This made it an excellent candidate for utilization within jSeamless.

Though technically it utilizes Flex 2.01 there is massive amounts of the Flex 2.01 source that have been re-written, over-written, and completely replaced for this implementation. There were many bugs found in the framework that required work-arounds and additional functionality necessary in the implementation that Flex in its initial state could not provide.

This implementation is simply a client that connects to the Remote Communication Implementation via HTTP or Socket (specified via configuration and client capabilities).

Google Web Toolkit Implementation
The GWT (Google Web Toolkit) implementation is being developed currently, and though it does not provide the same level of functionality as Flex/Flash does, it is much lighter-weight and provides a much more classical design appearance. The creation of this implementation is a relatively simple one as the entire code-base can be written in Java and then simply deployed to communicate to the Remote Communication Implementation.

Swing Implementation
The Swing implementation is currently being developed to provide both Desktop-based applications as well as Desktop-based UIs that remotely communicate with a server via the Remote Communication Implementation. This can be an extremely powerful option for scenarios where you do not wish to make connections to databases and such via the client, but want to provide an installed application on the Desktop for clients. The Swing implementation provides both levels of support.

Other Implementations
Many other implementations are either under way or currently being discussed. Being an open-source project, though supported commercially as well, requires a great deal of its support through community involvement. The project itself is large one and can only be successful if the community is willing to help it get the implementations to make it useful.

The Future of jSeamless
This is still a very new project and a very new idea, but shows great promise and potential for the future of UI development in Java.
 
< Prev   Next >