Open Source Software in Java
Curated list of production-grade libraries and tools. Updated by the community.
AspectJ is a seamless aspect-oriented extension to the Java programming language. It is Java platform compatible, easy to learn and use, and enables clean modularization of crosscutting concerns such as error checking and handling, synchronization, context-sensitive behavior, performance optimizations, monitoring and logging, debugging support, and multi-object protocols.
Blog is an interface for managing a multi-topic blog (Web journal). Its easy interface allows users to quickly create journals with several topics, all of which are concurrently accessible.
Ant is a software tool for automating software build processes. It uses XML to describe the build process and its dependencies.
RapidMiner (formerly YALE) is the world-wide leading open-source data mining solution due to the combination of its leading-edge technologies and its functional range. Applications of RapidMiner cover a wide range of real-world data mining tasks.
Javassist (Java programming assistant) is a load-time reflective system for Java. It is a class library for editing bytecodes in Java; it enables Java programs to define a new class at runtime and to modify a class file before the JVM loads it. Unlike other similar systems, Javassist provides source-level abstraction; programmers can modify a class file without detailed knowledge of the Java bytecode. They do not have to even write an inserted bytecode sequence; Javassist instead can compile a fragment of source text on line (for example, just a single statement). This ease of use is a unique feature of Javassit against other tools.
DirectMemory is an off-heap cache implementation (a-la BigMemory) to enable in memory serialization of a large number of java objects without affecting jvm garbage collection performance - released under the Apache Software License, Version 2.0
JFreeChart is a free Java class library for generating charts, including: * pie charts (2D and 3D) * bar charts (regular and stacked, with an optional 3D effect) * line and area charts * scatter plots and bubble charts * time series, high/low/open/close charts and candle stick charts * combination charts * Pareto charts * Gantt charts * wind plots, meter charts and symbol charts * wafer map charts
GujChat is a new Chat System capable of managing multiple chat servers, each one serving different rooms and options for its users. One single installation delivers webmasters different templates, rooms, languages and configurations
Blandware AtLeap is a multilingual free Java CMS (Content Management System) with full-text search engine. Blandware AtLeap is also a framework which allows you to rapidly start your own Web application. Blandware AtLeap is destined to creating both content-based sites and web applications with complicated business logic. Blandware AtLeap has the following features: * Simplicity of using. You can navigate on your site and choose editable areas by double mouse click or context menu. * rich text formatting possibilities using WYSIWYG editor. * Multilingual content. There is an ability to store content on several languages simultaneously in UTF-8 encoding. 100% of content are stored in the database. You can edit any data using web interface. * AtLeap allows all available pages to be indexed on all languages by external search engines (Google, Yahoo, etc). * Full text search engine. The embedded engine provides ability to search on several languages taking into account inflexions and stop words. Indexing the following document formats: RTF, PDF, Word, Excel, PowerPoint, HTML, XHTML, XML, TXT. * Individualization. AtLeap?s CMS ideology does not restrict creative graphical design of the site. The customer does not want template, banal routine graphical design. Blandware AtLeap allows creating individual, unique, exceptional solution. However nowadays the site has a lot except of content. The site can have complicated business logic. So Blandware AtLeap is: * Lightweight. It does not require (but can be run on) heavy and/or expensive EJB (Enterprise Java Bean) application server to run. * Independent from: Hardware platform, OS, DBMS, Servlet-container and Browser. * Stable: ** Multi-user work, implemented using application transactions (optimistic concurrency control). As for big texts you can even merge simultaneously edited content. ** Database transactions: rollbacks and pessimistic locking. ** The big texts are still saved even the HTTP session is invalidated. ** The input forms are validated at server and client side. ** Transparently saves state information and repopulates forms when they are redisplayed. ** Prevents of double form submission (client and server side). ** Bidirectional relationships between links and resources in order to prevent creating broken links and deleting used resources. ** There is ability to replace almost all dependent links during changing URL of Content Page or Resource. * Based on modern open source technologies: Hibernate, Spring, XDoclet, Struts, FCKEditor, Lucene, Quartz, Acegi, TinyMCE etc.
Byecycle is an auto-arranging dependency analysis plugin for Eclipse. Its goal is to make you feel sick when you see bad code and to make you feel happy when you see good code.
BeautyJ is a source code transformation tool for Java source files. One main feature of BeautyJ is to auto-format Java source code by generating a clean, normalized representation of the code. BeautyJ is also capable of auto-generating Javadoc comments with semantic information derived from identifier names.
Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage.
Commons-Collections seek to build upon the JDK classes by providing new interfaces, implementations and utilities. There are many features, including: * Bag interface for collections that have a number of copies of each object * Buffer interface for collections that have a well defined removal order, like FIFOs * BidiMap interface for maps that can be looked up from value to key as well and key to value * MapIterator interface to provide simple and quick iteration over maps * Type checking decorators to ensure that only instances of a certain type can be added * Transforming decorators that alter each object as it is added to the collection * Composite collections that make multiple collections look like one * Ordered maps and sets that retain the order elements are added in, including an LRU based map * Identity map that compares objects based on their identity (==) instead of the equals method * Reference map that allows keys and/or values to be garbage collected under close control * Many comparator implementations * Many iterator implementations * Adapter classes from array and enumerations to collections * Utilities to test or create typical set-theory properties of collections such as union, intersection, and closure
args4j is java command line options parser. Features: * It makes the command line parsing very easy by using annotations. * You can generate the usage screen very easily. * You can generate HTML/XML that lists all options for your documentation. * Fully supports localization. * It is designed to parse javac like options (as opposed to GNU-style where ls -lR is considered to have two options l and R.)
BoneCP is a fast, free, open-source, Java database connection pool (JDBC Pool) library. If you are familiar with C3P0 and DBCP then you already know what this means. For the rest, this is a library that will manage a database connection for you to get faster database access in your application.
crawler4j is an open source web crawler for Java which provides a simple interface for crawling the Web. Using it, you can setup a multi-threaded web crawler in few minutes.
AcornDB is a high performance, small footprint, transactional object oriented database written entirely in Java. It stores data in the application's native format, so no runtime data translation is required. AcornDB supports full ACID transactions and recovery. It provides an easy-to-use interface like query-by-example, object query API, automatic class schema recognition allowing programmers to store and retrieve information quickly, simply and reliably. AcornDB enabling high concurrency and speed while providing ACID transactions. AcornDB efficiently caches the data in memory, without exceeding application-specified limits. In this way works with an application to use available JVM resources while providing access to very large data sets.
Argus is a highly integrated Eclipse plug-in. The purpose of this plug-in is to add additional Errors and Warnings to the Eclipse Framework, assisting Java programmers to create bug free, high quality code. Obvious problems such as syntax errors are already detected by the Java compiler, and therefore will not be checked by Argus Codewatch. Instead, the plug-in tries to detect bad coding practices (such as unconditional loops) or violations of contract (such as when overriding Object.equals()). This plug-in also provides a framework for adding new checks. This allows developers to easily add new checks as they see fit, or to provide quickfixes to existing checks.
EasyBeans is an open-source lightweight EJB3 container implementation developed within the ObjectWeb consortium (www.objectweb.org). It can be integrated within JOnAS and Tomcat
Adempiere is one of major ERP system. Developed with java and postgres SQL, and having a great community for developing. it is a derivation of compiere but powerfull internally customizable and fully open source. both postgresSQL and java is open and free. erp solution is also absolutely free for downloading and using.
Jee(G)ESB is an JAVA Enterprise Service Bus. jeeESB will do Webservice Orchestration without any container or no need external containers. By a simple XML it will Webservice Orchestration. jeeESB is using XPath and XmlBeans for configuration.
JXPath defines a simple interpreter of an expression language called XPath. JXPath applies XPath expressions to graphs of objects of all kinds: JavaBeans, Maps, Servlet contexts, DOM etc, including mixtures thereof.
CleanSheets is a spreadsheet application. It features a formula language that closely resembles that of Microsoft Excel, and extensions for aiding end-user programmers in developing correct spreadsheets. The application relies on ANTLR for generating the formula compiler and the JFC/Swing JTable component for spreadsheet visualization.
jGossip is a simple and powerful forum implemented on J2EE platform using Struts framework. The project supports all the main features: reply-to user, page navigation, email-notification, administration of the users.
Although the ZIP file format it is a proprietary, de-facto standard by PKWARE Inc., ZIP files are ubiquitous on the Internet and thus on many platforms today. The J2SE API provides a well known package java.util.zip with classes like ZipInputStream, ZipOutputStream and ZipFile for easy access to ZIP compatible files. However, this package has some limitations/disadvantages: * Sun's implementation uses the character set UTF-8 (eight bit Unicode character set) for entry names and comments instead of CP437 (the genuine IBM-PC character set) as used by the de-facto standard PKZIP from PKWARE. As a result, you cannot read or write ZIP files with international entry file names such as \"t?cht.txt\" in a ZIP file created by a (southern) German. * You need to use an additional API (the package java.util.zip) if your application needs to support ZIP compatible files in addition to ordinary files and directories, thereby significantly inflating your code and adding unnecessary complexity (which adds bugs, bugs, and even more bugs). * You can either read or completely write ZIP compatible files, but you cannot just update individual entries. * The classes do not support the concept of a directory, which you may want to create, modify, list or delete. * You cannot browse a ZIP compatible file with a JFileChooser or FileSystemView. The TrueZIP Library has been developed to overcome these limitations/disadvantages.
Geocoding is the process of estimating a latitude and longitude for a given location. JGeocoder is a free geocoder implemented in Java. This project is loosely modeled after Geo::Coder::US , a Perl module available for download from the CPAN.
The CompreHensive collaborativE Framework (CHEF) initiative has as its goal, the development of a flexible environment for supporting distance learning and collaborative work.
VietSpider HTMLParser: Pure Java HTML DOM parser, support HTML 4.0.1. It is a fast, syntax checker, automatically closes elements with optional end tags; and can handle mismatched inline element tags.
BlueJ is an integrated Java environment specifically designed for introductory teaching.
Antigen (Ant Installer Generator) is a tool to take an Ant build script, combine it with a GUI and wrap it up as an executable jar file. Its primary purpose is to create powerful graphical installers from Ant scripts.
Avalon consists of a number of products and sub-projects supporting service and component management.
The Bugtracker is a complete bug/issue management system, built around MySQL utilizing Java Servlets for a web based front end. This will soon grow into a complete project development architecture encapsulating project management, issue tracking, QA, etc
GlassFish is the name for the open source development project for bulding a Java EE 5 application server. It is based on the source code for Sun Java System Application Server PE 9 donated by Sun Microsystems and TopLink persistence code donated by Oracle. This project provides a structured process for developing a high quality application server that makes new features available faster than ever before. It is the response to Java developers who want access to the source code and the ability to contribute to the development of Sun's next generation application server which is based on GlassFish. This project is designed to encourage communication between Sun and Oracle engineers and the community and will enable all developers to participate in the application server development process.
Bottomline is a JDBC Bridge API that loads database drivers directly from JAR archives. Unlike JDBC, Bottomline uses custom class loaders to load database drivers. This gives an advantage to load multiple versions of the same database driver from different JAR files. Developers can build applications using conventional JDBC and transparently use Bottomline underneath. Bottomline also seamlessly integrates with applications servers like JBoss and can be bound in JNDI which allows connections to be pooled using the application server's Connection Pooler.
Open Message Queue is the open source version of Sun Java System Message Queue. Open message queue is an enterprise quality, production ready, scalable messaging server. It provides a complete Java Message Service (JMS) implementation for message oriented system integration. In addition, Open MQ provides the additional enterprise features that are necessary for enterprise deployments, large and small. It gets its roots from Sun's Java Message Queue and provides all the features, functions and capabilities of the currently available licensed product: Java System Message Queue.
The EJTools JMX Browser is a tool which allows to view and interact with the JMX space in a JMX compatible implementation. It provides the following features: * remote connections via RMI/IIOP/others (Swing-based) * local connection (Web-based) * a hierarchical view of the domains and the mbeans * access to the attributes, the operations and the notifications * attribute plotting The EJTools JMX Browser comes in two flavors : * A Swing-based application, that can be connect remotly to interact with the JMX server/implementation. * A Web-based application, that can be run in any J2EE 1.3 Web stack. It provides an easy way interact with the JMX server.
J2EE Scheduler is a simple task scheduling mechanism for J2EE applications. This library can be considered a wrapper around the Timer and TimerTask classes found in the standard Java API. Configuration for tasks to be executed and their frequency is XML-based. A typical use for it is to periodically refresh in-memory data to ensure it stays up-to-date. It can also be used for automated maintenance tasks or anything else that suits your need.
he AJAX Tag Library is a set of JSP tags that simplify the use of Asynchronous JavaScript and XML (AJAX) technology in JavaServer Pages.
Attesoro is a translation editor for java programs. A translator can enter international characters directly into Attesoro and Attesoro will save the file in the correct format with escape sequences. Attesoro shows the untranslated text and the translator can type the translation directly below it. Attesoro shows items that have not yet been translated in blue while translated items are shown in black. Attesoro will change the name of the key in all files at once. Attesoro displays keys with changed translations in green and allows you to revert individual keys.
Log Bridge allows the abstraction of logging from a particular logging implementation. Log Bridge allows you to do this by providing a simple API that acts as a bridge from your library or component through to the logging package that the developers using your components choose. The features built into Log Bridge that are not readily available in other packages are: Tracing (entry and exit) is supported Programmatic control A simple API Less magic Built-in support for Simple Log Wide logging package support Log Bridge currently provides bridges to the following logging packages: Simple Log J2SE Logging Log4J IBM's Logging Toolkit for Java jLo Protomatter Syslog
Columba is an Email Client written in Java, featuring a user-friendly graphical interface with wizards and internationalization support. Its a powerful email management tool with features to enhance your productivity and communication.
edtFTPj is an FTP client library that allows any Java application to have full embedded FTP functionality. It includes a straightforward but comprehensive API with functions such as put (), get(), chdir(), dir() and pwd(). Active and passive modes are supported, and directory list parsing.
The Apache JAMES Project delivers a rich set of open source solutions, written in Java, related to internet mail and news. JAMES is organized into subprojects with JAMES Server and the Mailet API as their core. Apache JAMES is a project of The Apache Software Foundation (ASF) which encourages a collaborative, consensus-based development process under an open software license. The ASF maintains other Java projects which may also be of interest. These are detailed on the ASF Projects page. We recommended that users of JAMES products subscribe to the JAMES users mailing list.
Berkeley DB JE is a high performance, transactional storage engine written entirely in Java. Like the highly successful Berkeley DB product, Berkeley DB JE executes in the address space of the application, without the overhead of client/server communication. It stores data in the application's native format, so no runtime data translation is required. Berkeley DB JE supports full ACID transactions and recovery. It provides an easy-to-use interface, allowing programmers to store and retrieve information quickly, simply and reliably. Berkeley DB JE was designed from the ground up in Java. It takes full advantage of the Java environment. The Berkeley DB JE API provides a Java Collections-style interface, as well as a programmatic interface similar to the Berkeley DB API. The architecture of Berkeley DB JE supports high performance and concurrency for both read-intensive and write-intensive workloads. Berkeley DB JE is different from all other Java databases available today. Berkeley DB JE is not a relational engine built in Java. It is a Berkeley DB-style embedded store, with an interface designed for programmers, not DBAs. Berkeley DB JE's architecture employs a log-based, no-overwrite storage system, enabling high concurrency and speed while providing ACID transactions and record-level locking. Berkeley DB JE efficiently caches most commonly used data in memory, without exceeding application-specified limits. In this way Berkeley DB JE works with an application to use available JVM resources while providing access to very large data sets.
The jarg reduces the size of a jar file in which java class files are stored. \"Size curtailment can be carried out simply\" is the 1st target. However, as a result of processing by jarg, since a Java class file is optimized, it becomes quicker, and since it is renamed, it becomes that it is harder to be analyzed. That is, jarg is 'Java Optimizer', and it is 'Java Obfuscator' and is also 'Java Shrinker' or 'Java Reducer'.
ANother Tool for Language Recognition, (formerly PCCTS) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing Java, C#, or C++ actions. ANTLR provides excellent support for tree construction, tree walking, and translation.
The PDF Renderer is all Java library which renders PDF documents to the screen using Java2D. Typically this means drawing into a Swing panel, but it could also draw to other Graphics2D implementations
JDBCPersistence is yet another OR mapping layer. It differs from its peers in both implementation and API. Using bytecode generation at its core the framework generates classes that implement JDBC Logic which is specific to a table/bean pair. JDBCPersistence generates persistor classes at runtime on demand incurring no noticeable overhead on the development process. The entire framework configuration is done via API, which significantly improves start-up time and reduces library size.
iPoint Portal Open Edition is a complete open source collaborative web portal. iPoint comes with a complete set of portlets with which you can create fully featured portals, Internet sites and collaborative workspaces. Features: * Full Content Management Capabilities for static Content on any page. * Web 2.0 collaboration features including Wikis, Calendars, Blogs, Forums and Document Sharing. * Rich Media support including embedded images, audio and video. * Full text search of all content. * Extensive notification and messaging support including eMail, SMS and portal. * Easily branded with full XHTML and CSS support. Blue Dot Bullet RSS support both to publish and consume RSS feeds. * WebDAV support to drag and drop files for sharing. * Easily extensible through building custom portlets, templates and views. * Standards compliant supporting JSR 168 portlets on any page. * Easily Integrated with other applications using portlets. * Java platform , runs on any hardware platform that supports Java e.g. Windows and Linux. * Strong security with permissions on individual pages and portlets.
Japex is a simple yet powerful tool to write Java-based micro-benchmarks. It started as a simple project over a year ago, primarily aimed at testing XML and Fast Infoset performance, but has evolved into a rather sophisticated framework with support for XML and HTML output as well as various types of charts for displaying the results. It is similar in spirit to JUnit in that if factors out most of the repetitive programming logic that is necessary to write micro-benchmarks. This logic includes loading and initializing multiple drivers, warming up the VM, forking multiple threads, timing the inner loop, etc. One of the key design goals for Japex was extensibility. Via the use of a simple model of input and output parameters, it is possible to write micro-benchmarks to test practically anything.
Activity Manager is a project management tool. It helps a project leader to manage and check his collaborators activity. Activity Manager allows to build and maintain a hierarchical task tree. It is based on a database with a very simple model that allows to build quickly custom reports through the report facility or through simple SQL requests. Activity Manager is customizable. Activity Manager is a Java based tool running in standalone mode (with an embedded HSQLDB database) or with a MySQL database server or custom mode (user defined database for skilled users). The tool's features are : * Durations repository administration * Collaborators repository administration * Tasks repository administration * Contributions management (=activity management) * Extensible report facility (with built in templates) * XML database export/import * EXCEL export
FeedPod is a Text-To-Speech RSS/ATOM Newsfeed reader. It generates PodCasting feeds, suitable for automatically downloading onto your portable MP3 player.
Drools is an Object-Oriented Rule Engine for Java. Drools is an augmented implementation of Forgy's Rete algorithm tailored for the Java language. Adapting Rete to an object-oriented interface allows for more natural expression of business rules with regards to business objects. More importantly, Drools provides for declarative logic programming and is flexible enough to match the semantics of your problem domain. The various parts that compose a rule may be extended to lend domain-specific sense to the rule.
ePascal is interpreter of pascal programming language with own memory management. It was created for education purposes to learn algorithmic thinking of students of high schools.
DDBot is a web robot, search engine, and web server written entirely in Java. It was written as an example for a chapter on how to write your search engines, and as such it is very simplistic.
Acegi Security is a powerful, flexible security solution for enterprise software, with a particular emphasis on applications that use Spring. Using Acegi Security provides your applications with comprehensive authentication, authorization, instance-based access control, channel security and human user detection capabilities.
CBE is revision control system with integrated make-like functions written in pure Java. It can be used similar to CVS but offers some new features like renaming files (while still keeping the history) and using a database as backend (optional).
Adit is another database interface tool built with Java. Adit is meant to be a lightweight tool for querying a database.
The JGoodies Binding synchronizes object properties with Swing components. And it helps you represent the state and behavior of a presentation independently of the GUI components used in the interface.
A \"bottom up\" template specification in which data knows how to insert itself into the proper place in your template. Templates can be built from static files or from Java servlets.
Mock is a widely used technology in unit test domain. It shields exteral and unnecessary factors and helps developers focus on the specific function to be tested. EasyMock is a well known mock tool which can create mock object for given interface at runtime. The mock object's behavior can be fine defined prior the test code in the test case. EasyMock is based on java.lang.reflect.Proxy, which can create dynamic proxy class/object according to the given interfaces. It has the inherent limitation from the Proxy. It can create mock object for given interface only. Mocquer is a similar mock tool as EasyMock. With the help of Dunamis Project, it extends the function of EasyMock to support mock object creation for both class and interface.
The Jakarta-ORO Java classes are a set of text-processing Java classes that provide Perl5 compatible regular expressions, AWK-like regular expressions, glob expressions, and utility classes for performing substitutions, splits, filtering filenames, etc. This library is the successor to the OROMatcher, AwkTools, PerlTools, and TextTools libraries originally from ORO, Inc. Despite little activity in the form of new development initiatives, issue reports, questions, and suggestions are responded to quickly.
Alma is a software workshop for modeling and analyzing. It reads several sources (languages, models, etc.), helps you design for object-oriented modeling (definition of classes, relations, patterns, etc.), modifies the structure and the code, and outputs new sources, documentation, diagrams, etc.
Spring Modules is a collection of tools, add-ons and modules to extend the Spring Framework. The core goal of Spring Modules is to facilitate integration between Spring and other projects without cluttering or expanding the Spring core. Features: * Provides spring integration with commons-validator. * Provides an extensive framework for declaratively define validation constraints on domain models using XML, Java 5 annotations and/or proprietary validation language (Valang). * The framework is based on Spring's Validator infrastructure.
Anvil is a Java based server environment and object oriented programming language with templating support, being especially well-suited to for web applications.
Claros inTouch (previously known as Claros Webmail) is an Ajax communication suite with key features such as webmail, address book, post-it notes, calendar(in progress), built in instant messenger, rss reader, webdisk(in progress). It is an open source web application which features built in spam protection and instant messaging capabilities.
AsyncWeb is a high-throughput, non blocking Java HTTP engine - designed throughout to support asynchronous request processing. AsyncWeb employs non-blocking selector driven IO at the transport level, and is asynchronous throughout - from the initial parsing of requests, right through to and including the services implemented by users. AsyncWeb breaks away from the blocking request / response architecture found in todays popular HTTP engines. This allows it to be highly scalable and capable of supporting very high throughput - even in high processing latency scenarios. A simple API allows new asynchronous services to be created easily - and out-of-the-box Spring integration allows them to be configured simply and with great flexibility. In addition to \"endpoint\" HTTP services, AsyncWeb also allows configurable \"chains\" of behavior - enabling \"filter\" like behavior to be applied to all requests. Pluggable \"resolvers\" map incoming requests to their target HTTP service - and are given access to the entire incoming request - allowing the routing possibilities to be very flexible.
Metro is a high-performance, extensible, easy-to-use web service stack. It is a one-stop shop for all your web service needs, from the simplest hello world web service to reliable, secured, and transacted web service.
Canoo WebTest is a free open source tool for automated testing of web applications. It calls web pages and verifies the results, giving comprehensive reports on success and failure.
The Bliki engine is a Java API and an Eclipse offline editor for Mediawiki (aka wikipedia.org) documents. API features: * Renders Wikipedia syntax to HTML. * Renders Wikipedia syntax to PDF, LaTeX, Docbook (only partial support). * Template support. * Configurable through WikiModel interface. * HTML to Wikipedia syntax converter. * Source code highligthing for: java, php, html, javascript,... Eclipse editor features: * Syntax highlighting. * Content outline and content assist. * Down-/upload articles from a wiki server. * HTML preview.
The heart of the engine is an ability to capture the execution state of a thread and resume it later. Many applications of today need to have a part of the program that waits for other entities. . Often there are multiple conversations running concurrently. Those are what we call \"workflow\" applications. Today, those applications can be written, but one can't write it very productively. Dalma makes it very easy to write those workflow applications by letting you write it as an ordinary procedural program without any boilerplate.
The Java Architecture for XML Binding (JAXB) provides a fast and convenient way to bind between XML schemas and Java representations, making it easy for Java developers to incorporate XML data and processing functions in Java applications
WidgetServer is a Java/XML server-side GUI-framework which enables an application to run as either a monolithic Swing app, a client/server Swing app, or as a Web app without any change. It includes a mixed deployment mode, which supports one server to serve Swing clients and Web clients at the same time. The framework uses XML or a single java API to define an application's GUI independently from target client technology. It provides a common widget-based, object-oriented programming interface for Web and Swing GUIs, which prevents the developer from struggling with HTML and HTTP or with the internals of Swing. The project includes a GUI builder that is based on the framework's functionality.