Platonos - Platonos Projects

The Platonos Project is provided as a group of sub projects. Each project is made available to hopefully give developers the ability to develop applications more quickly in some manner. Below we'll describe each sub project briefly. To get a more detailed description, please select the Projects menu, then select from the sub menus on the right for the project you wish to learn more about.

Platonos Plugin Engine
This is the core of the majority of projects here at Platonos. The plugin engine is a small yet incredibly powerful library allowing any existing application, as well as new applications, to add plugin support. Plugins are painless to develop, with only a few lines of code for an empty but loadable plugin necessary. With that in mind, in our Tools project we have provided a GUI driven plugin builder that can be embeded within existing applications as well as ran stand-alone to allow you to build plugin projects complete with template java source, ant build script that compiles and packages the plugin, and more.

Platonos Application Framework
Developers are screaming for an easy to use ready out-of-the-box Java GUI application framework. While many developers don't mind starting from scratch, a lot more want the simplicity of not having to deal with the common factors of applications, such as the main window, menu bar, closing down properly, help, preferences, configuration settings, and more. This application framework is all about making it far easier than ever before to create high quality professional Swing applications, but takes it a step further by utilizing the Platonos Plugin Engine at its core. With this combination, this application framework not only provides a highly functional Swing application, it provides the means to easily and quickly extend it via plugins. Rather than having to focus on the framework aspects, developers can quickly add new plugins specific to their application needs. The framework provides common features such as mentioned above, as well as many not-so-common features, like the auto-update of plugins from multiple locations, a variety of components at your disposal via our Components project, and many extra plugins to handle things like email and ftp, remote control capabilities (so that you can control your app remotely via another tool), ability to push plugins to the application for a manual update (good for IT engineers who may need to update a running application that monitors hardware, for example), and more.

Platonos Components Library
What good would an application framework be without a variety of custom components that make a developers life easier. Things like a highly customizable file choosing dialog (beyond what JFileChooser offers), special components like rounded shadowed panels and professional looking dialogs, wizards, various types of tables, trees and lists, specialized input components with filters, and a lot more. The components library is an on going project that will provide more and more components. Each time a new version of the application framework is released, it will contain a subset of components that are ready for use. Some components may be in an early state and not considered production ready, which will not be packaged with the application framework. Still, you can directly access all components through this project.

Platonos Tools
The above three projects consist of the primary goal of The Platonos Project, which is to provide a highly extensible, easily maintainable and easy to develop for application framework. The plugin engine provides the ability to make it both extensible and maintainable, as well as is the key reason why developing for it is easy. But, the plugins as a whole that make up the framework are the key to making it easy. Each plugin provides various extension points and events to allow further development of a vast array of plugins to turn the base application framework into truly amazing cross platform software. Having said that, writing plugins, while easy, will often result in a lot of copying/pasting to get one started. Not a big deal if you are only writing one or two, but if you are a developer using the application framework to build your next big product, you surely don't want every developer on the team to have to keep on copying/pasting a template plugin to get one going. What is needed is a plugin project builder, a tool that facilitates the ease of creating a plugin from scratch. Once a plugin project is under way, especially when a version is ready for the world to use, you need a way to deliver it. Yes, true enough it can be wrapped up in a fat install CD or download with the application as a whole. But there will be times when individual plugin updates may need to be made available, even a group of them. As an end user of many software products, it sucks to have to download a complete new version of the software, reinstall over the existing version or uninstall then reinstall. What is much nicer is the ability to be notified of minor updates and have them delivered, much like an anti-virus software program handles updates. Simply select what you want and update away.

The primary purpose of the Tools sub project is to provide such tools to the developer so that they don't waste time doing repetitive tasks. The Plugin Builder sub project provides a stand-alone as well as embedable UI that allows the developer to create new (or modify existing) plugin projects, including building the ant build script, the package structure, the lifecycle class (if one is provided), and when embeded within an application running the plugin engine, lists all the extension points, plugins (for dependencies) and events available for use. When any plugin is chosen, it's classpath is added to the ant build script to allow the compiling to succeed. You can even hot-deploy a plugin into the existing application while it's running without having to restart it.

To further aide the development team, rather than having to deal with an FTP client or networked mapped drives and copying/pasting a plugin or group of plugins, the Deploy tool will allow you to select from among plugins that have modifications to them and allow you to select one or more FTP servers or drive paths to copy the plugins to. This is very handy when you are ready to deploy a plugin update that a specific vendor is waiting for, or if you have your own update server, where you can upload any number of plugins to the server. You can even use multiple servers to handle clustered servers to ensure your updates are available 24/7.