« May 2007 | Main | July 2007 »

June 2007 Archives

June 1, 2007

SwarmCache - Cluster-aware Caching for Java

SwarmCache is a simple but effective distributed cache. It uses IP multicast to efficiently communicate with any number of hosts on a LAN. It is specifically designed for use by clustered, database-driven web applications. Such applications typically have many more read operations than write operations, which allows SwarmCache to deliver the greatest performance gains. SwarmCache uses Java Community internally to manage the membership and communications of its distributed cache.

Wrappers have been written that allow SwarmCache to be used with the Hibernate and JPOX persistence engines.

How It Works?
The concept behind SwarmCache is fairly simple. Each server instantiates its own manager. For each type of object that the server wishes to cache, it instantiates a cache and adds it to the manager. The manager joins a multicast group and communicates with other managers in the group. Whenever an object is removed from a cache, the manager notifies all other managers in the group. Those managers then ensure that the object is removed from their respective caches. The result is that a server will not have in its cache a stale version of an object that has been updated or deleted on another server.

Note that the managers only need to communicate when an object is removed from a cache. This only happens when an object is updated or deleted. The managers do not co-operate beyond this. This means that the amount of inter-server communications is proportional to the amount of updates/deletes of the application. As the communications is multicast, it is not proportional to the number of caching hosts. Also notice that there is no "server"; all hosts are equal peers and they can come and go from the cache group as they please without affecting other group members. Thus the operation of the distributed cache is very robust.

Basic Usage
SwarmCache is designed to be integrated in to the persistence layer of a database-driven Java application. However, it could be useful for other types of applications. Once built in to the persistence engine, SwarmCache should be transparent to higher layers of the software. SwarmCache does not directly support transaction management. This can be accomplished by wrapping the cached objects and storing some additional transaction data. This will described and possibly implemented at a later date.

Swarmcache requires that swarmcache.jar, jgroups-all.jar, commons-collections.jar, and commons-logging.jar (included in the download) be in your classpath.

For most applications, it is sufficient to make use of the CacheFactory class to configure and use SwarmCache. Here is an example:

import net.sf.swarmcache.*;

...

CacheFactory cacheFactory;

...

// Configure and Initialize the cache manager
CacheConfiguration conf = new CacheConfiguration();
conf.setCacheType(CacheConfiguration.TYPE_LRU);
cacheFactory = new CacheFactory(conf);

...

// Create a new cache, using a name that describes
// what kind of object we will store
ObjectCache cache = cacheFactory.createCache("People");

...

// Store something in the cache
String key = "0001";
String person = "John Watkinson";
cache.put(key, person);

...

// Retrieve something from the cache
String person = (String)cache.get("0001");
System.out.println(person);

...

// Clear an object from the cache
// (This results in the sending of a
// multicast message to other caching hosts)
cache.clear("0001");
String person = (String)cache.get("0001");
// The following will print 'null'
System.out.println(person);

The example is simple, but running this same code on multiple machines in a network will result in their caches being consistent.

Note that the keys used must be serializable objects-- they must implement java.io.Serializable. The objects themselves that are stored in the cache need not be serializable. And of course, the keys should not be large objects for transmission efficiency purposes.

In order to keep keys distinct, it is usually preferred to have one cache per type of object stored. In that case, it makes sense to follow the convention that the cache be named after the fully-qualified class name of the object type to be stored.



Usage in a Persistence Engine

Here is some skeleton code that demonstrates how SwarmCache could be integrated in to a persistence engine. The following class is responsible for persisting an object of type Person:

public class PersonEntity extends GenericEntity {

ObjectCache cache;

public PersonEntity(CacheFactory cacheFactory) {
cache = cacheFactory.createCache("Person");
// * Other initialization here
}

...

public Person get(long key) {
Long cacheKey = new Long(key);
Person person = (Person)cache.get(cachekey);
if (person == null) {
// * Get the object from the database
if (person != null) {
// Put it in the cache
cache.put(cacheKey, person);
}
}
return person;
}

...

public void insert(Person person) {
// * Do database insert
// Add new object to cache
Long cacheKey = new Long(person.getKey());
cache.put(cacheKey, person);
}

...

public void update(Person person) {
// * Do database update
// Remove object from cache
// (This causes all caches in the group to be notified)
Long cacheKey = new Long(person.getKey());
cache.clear(cacheKey);
// Re-add the object to the cache
cache.put(cacheKey, person);
}

...

public void delete(long key) {
// * Do database delete
// Remove object from cache
// (This causes all caches in the group to be notified)
Long cacheKey = new Long(key);
cache.clear(cacheKey);
}

...

}

SwarmCache Project Home Page
http://swarmcache.sourceforge.net

SwarmCache Documentation
http://swarmcache.sourceforge.net/documentation.html

Download SwarmCache
http://sourceforge.net/project/showfiles.php?group_id=78637&release_id=193220

Permalink

June 2, 2007

JBossCache - TreeCache

JBoss Cache is a replicated and transactional cache. It is replicated since multiple JBoss Cache instances can be distributed (either within the same JVM or across several JVMs whether they reside on the same machine or on different machines on a network) and data is replicated across the whole group. It is transactional because a user can configure a JTA compliant transaction manager and make the cache operation transactional. Note that the cache can also be run without any replication; this is the local mode.

Currently, JBoss Cache consists of two components: a generic cache (implemented internally as org.jboss.cache.TreeCache) and a POJO cache (implemented internally as org.jboss.cache.aop.PojoCache). TreeCache is a tree-structured cache that provides replication and transaction context, while PojoCache extends the functionality of TreeCache but behaves as a true object cache providing transparent and finer-grained object mapping into internal cache.

JBoss Cache is a product designed to cache frequently accessed Java objects in order to dramatically improve the performance of e-business applications. By eliminating unnecessary database access, JBoss Cache decreases network traffic and increases the scalability of applications.

But JBoss Cache is much more than a simple cache. JBoss Cache provides fully transactional features as well as a highly configurable set of options to deal with concurrent data access in the most efficient manner possible for your application. In addition, it is a clustered cache that replicates contents to other cache instances running on separate JVMs, servers or even entire networks, making JBoss Cache a highly efficient library used by application server developers to implement clustering features.

JBoss Cache provides two caching APIs to suit your needs. The JBoss Cache API offers a traditional, tree-structured, node-based cache and the Pojo Cache API, which builds on the JBoss Cache API, provides the ability to perform object-based, fine-grained replication of Java objects, resulting in maximum performance benefits. Please see the JBoss Cache user guide for a more detailed discussion on these APIs.

What is the license for JBoss Cache?

JBoss Cache is licensed under LGPL

How do I build JBoss Cache from CVS sources?

To build, do sh build.sh jar. This will produce jboss-cache.jar in the dist/lib directory. Or if you want to build the standalone package, do sh build.sh dist this will produce dist/jboss-cache-dist.zip Note that you will need to use JDK 5.0 to build the distribution. You can still use the binaries you build with J2SE 1.4.x though..

Can I run JBoss Cache outside of JBoss Application Server?

Of course! JBoss Cache comes in two flavors:
* Integrated with JBoss Application Server as an MBean service.
* Standalone, that can run in any Java EE server such as BEA WebLogic or IBM Websphere. Of course, it can also run in a standalone Java process (i.e., outside Java EE context).


How do I deploy JBoss Cache as a MBean service?

To deploy JBoss Cache as an MBean inside JBoss, you can copy the configuration xml file over to the deploy directory (from all configuration whereby the necessary jars are present). Under the standalone package etc/META-INF directory , there are example configuration files for different cache modes that can be used to deploy JBoss Cache as well.

How does JBoss Cache's replication mechanism work?

JBoss Cache leverages JGroups as a replication layer. A user can configure the cluster of JBoss Cache instances by sharing the same cluster name (cluster name). There is also an option of whether to populate the cache data upon starting a new instance in the ClusterConfig attribute.

Note that once all instances join the same replication group, every replication change is propagated to all participating members. There is no mechanism for sub-partitioning where some replication can be done within only a subset of members. This is on our to do list.

Which TransactionManagers are supported by JBoss Cache?

JBoss Cache supports any TransactionManager that is JTA compliant such as JBossTM. A user can configure the transaction manager through the configuration xml setting. JBossCache also has a built in dummy transaction manager (org.jboss.cache.tm.DummyTransactionManager) for testing purposes only. But note that DummyTransactionManager is not thread safe .i.e., it does not support concurrent transactions. Instead, only one transaction is allowed at a time.

Download JBoss Cache
http://labs.jboss.com/jbosscache/download/index.html

JBoss Cache Documentation
http://labs.jboss.com/jbosscache/docs/index.html

Whirlycache

Whirlycache is a fast, configurable in-memory object cache java. It can be used, for example, to speed up a website or an application by caching objects that would otherwise have to be created by querying a database or by another expensive procedure. From the testing that we have done, it appears to be faster than any other Java cache that we have been able to inspect.

Whirlycache Benchmark Results.

Whirlycache Design

Whirlycache is built around several design principles that differ from other cache implementations:

1. Require synchronization as infrequently as possible
2. Do as little as possible in the insertion and retrieval operations
3. Soft limits are acceptable for many applications
4. Disk overflow becomes a bad idea very quickly

Many attributes of Whirlycache are configurable in an XML file, but the most important components of the cache are the Backend, the Tuner, and the Policy.

We support pluggable backend implementations that need to implement the ManagedCache interface (which is a subinterface of java.util.Map, although not all the methods of Map need to be implemented). We currently support two backends: ConcurrentHashMap and FastHashMap. You can decide which one suits your application best. In our testing, it's hard to tell which one comes out on top all of the time. If you need to, you can even implement your own backed by implementing the ManagedCache interface.

The Tuner is a background thread that performs cache maintenance activites specified in the configured Policy implementation. One Tuner thread per cache is created and it is configured to run every n seconds. It depends on your application, but you definitely don't want to run the Tuner too often since it will only serve to burden the system unnecessarily. If your data doesn't change a lot, you could simply configure it to run every few minutes.

The purpose of the Tuner is to perform activities that would otherwise be performed by the insertion and retrieval operations (which we want to keep very lean and fast). The Tuner expires elements from the cache based on the configured Policy and the configured maxsize of the cache. Please keep in mind that the maxsize value is a softlimit that can be exceeded in between Tuner runs (remember that these only run every n seconds). When the Tuner thread runs, it will prune the cache down to the maxsize according to the rules of the Policy.

This last point is particularily relevant to those who may be inserting large objects into Whirlycache. For example, if you decide to cache 10Mb PDF files in memory, be sure that your Cache has an appropriately configured max-size and that you run the Tuner frequently enough to account for any activity that could result in something potentially disastrous such as ninety 10Mb files being inserted all of a sudden. If you don't have enough memory allocated to your JVM, you will inevitably get an exception complaining about a lack of memory! The max-size declaration in the whirlycache.xml file tells the configured Policy class to trim the Cache to n elements every time it runs. There is nothing to prevent you from successfully inserting n+1 objects into the cache. It will work, assuming you don't run out of memory.

The Policy defines the set of rules for removing elements from a cache. You can specify a different Policy implementation per named cache in the whirlycache.xml configuration file. Currently, we offer FIFO, LFU and LRU.

Configuration & Installation
To use Whirlycache, simply download the latest distribution and unzip it. Then, copy all of the supplied jar files in your classpath. Finally, you will need to supply a whirlycache.xml file in your classpath as well. You need to properly configure the whirlycache.xml file according to your needs, but we have supplied you with reasonable default values that you can change later if you need to.
Here is a sample whirlycache.xml configuration file.

Whirlycache License

Project Home Page
https://whirlycache.dev.java.net/

Whirlycache Source Code Download
https://whirlycache.dev.java.net/source/browse/whirlycache/

Download Whirlycache
https://whirlycache.dev.java.net/downloads/whirlycache-1.0.1.zip

Jofti

Jofti is a simple to use, high-performance object indexing and searching solution for Objects in a Caching layer or storage structure that supports the Map interface. The framework supports EHCache, JBossCache and OSCache and provides for transparent addition, removal and updating of objects in its index as well as simple to use query capabilties for searching. Features include type aware searching, configurable object property indexing, indexing/searching by interfaces as well as support for Dynamic Proxies, primitve attributes, Collections and Arrays.

Who needs Jofti?

If you want to be able to quickly search objects in your cache as if it was a datastore, leverage your cache data so you do not have to do expensive repeat fetching from remote systems or add flexible query capabilities to an existing cache. Even if you simply want to be able to find data in a cache or map without knowing the key, then Jofti is for you.

Jofti Supports

Jofti has been designed to allow developers freedom to use the caching solution they prefer as a plug-in or configure its Indexes as listeners for an existing Cache.

Currently supported are:

* IBM ObjectGrid
* Tangosol Coherence
* EHCache
* OSCache
* JBossCache
* Any Map structure


Features

Simple Querying

Jofti currently supports two standard query language formats:

* SQL
* EJB3 QL

The adoption of these standards for the query languages is to provide a low-learning curve for developers and enable easy development of complex queries using well understood idioms.

Ease of Integration

For Caches that support the listener model, Jofti can be added to any application by simply registering an existing Cache with Jofti's IndexManager.

The index is then kept up to date with the Cache no matter where it is used in the application. This means almost zero code change to add querying capabilities to an existing Cache instance.

Memory Management

For applications that have large cache sizes, or operate in a memory-sensitive environment, you can easily specify only a portion of the index data to be kept in memory, with the rest paged to and from disk on-demand.
Flexible licensing

The current release (version 1.1) is available under a dual license of GPL or a Commercial license for those that want to avoid the implications of the GPL license.

Also,

* Multi Cache support
* Transaction support
* Type aware searching
* Configurable property indexing
* Indexing/searching by interfaces
* Support for dynamic proxies
* Support for primitve attributes
* Support for collections and arrays
* String prefix searching
* Simple query language

Jofti Home Page
http://www.jofti.com

Jofti Support Forum
http://jofti.com/forums/

Download Jofti
http://www.jofti.com/download.html

More Open Source Cache Systems

cache4j

cache4j is a cache for java objects. Simple API and fast implementation.

* in memory caching
* design for multithread environment
* two implementation: synchronized, blocking
* eviction algorithm LFU, LRU, FIFO
* for store object can use strong or soft reference
* available under the BSD license

cache4j Tutorials
http://cache4j.sourceforge.net/tutorial.htm

Cache4j Download
http://sourceforge.net/project/showfiles.php?group_id=160023&package_id=180807&release_id=399978

More Open Source Cache Systems

June 3, 2007

JasperReports

JasperReports is a powerful open source Java reporting tool that has the ability to deliver rich content onto the screen, to the printer or into PDF, HTML, XLS, CSV and XML files. It is entirely written in Java and can be used in a variety of Java enabled applications, including J2EE or Web applications, to generate dynamic content.

Its main purpose is to help creating page oriented, ready to print documents in a simple and flexible manner.

 

JasperReports Key Features

 

Embeddable

* Embeddable Java reporting library

* Enables embedding in any host application

* No external reporting server required

* Plug in Java and Groovy code

Complex Reports

* Sub-reports easily handle highly complex layouts

* Pixel-perfect page-oriented output for web or print

* Report output in PDF, XML, HTML, CSV, XLS, RTF, TXT

* NEW: Now with crosstabs

Integrated Charting

* Comprehensive set of chart types

Internationalized and Localizable

* Multi-language Unicode and other native encodings

* Dynamic text localization

* Localized date, number, and currency formatting

Scalable

* High performance report generation

* No limit to report size

Extensible

* Supplement built-in expressions with Java or Groovy

* Plug in Java code and Groovy code

Easy to Use

* iReport visual report designer

* Other Eclipse- and Swing-based designers available

* Built-in Swing viewer

* Extensive code examples

Standards Based

* Written in Java

* Report definitions in XML

Flexible Data Access

* Multiple data sources of multiple kinds in one report

* Built-in support for JDBC, EJB, POJO, Hibernate, XML

* Extensible to any data source

JasperReports Requirements

JRE

 

JRE 1.3 or higher

Commons

Jakarta Commons BeanUtils Component (version 1.7 or later)
http://jakarta.apache.org/commons/beanutils/

Jakarta Commons Collections Component (version 2.1 or later)
http://jakarta.apache.org/commons/collections/

Jakarta Commons Javaflow (Sandbox version)
http://jakarta.apache.org/commons/sandbox/javaflow/

Jakarta Commons Logging Component (version 1.0 or later)
http://jakarta.apache.org/commons/logging/

XML

JAXP 1.1 XML Parser

Jakarta Commons Digester Component (version 1.7 or later)
http://jakarta.apache.org/commons/digester/

JDBC

JDBC 2.0 Driver

PDF

iText - Free Java-PDF library by Bruno Lowagie and Paulo Soares (version 1.01 or later)
http://www.lowagie.com/iText/

XLS

Jakarta POI (version 2.0 or later)
http://jakarta.apache.org/poi/

JExcelApi (version 2.5.7 or later)
http://jexcelapi.sourceforge.net/

Charts

JFreeChart (1.0.0 or later)
http://www.jfree.org/jfreechart/

JCommon - required by JFreeChart
http://www.jfree.org/jcommon/

 

Download JasperReports 

http://www.jasperforge.org/index.php?option=com_docman&task=cat_view&gid=74&Itemid=248 

JasperReports Documentation

http://jasperforge.org/sf/wiki/do/viewPage/projects.jasperreports/wiki/HomePage 

 

JasperForge.org

On this site you will find all JasperSoft open source projects, source code, bug trackers, discussion forums, etc.
The other JasperSoft open source projects are:

More Open Source Charting & Reporting applications

June 4, 2007

InfoGlue - Content Management Platform

InfoGlue is an advanced, scalable and robust content management / Portal platform written in 100% Java. It is suitable for a wide range of applications and organisations. Typical uses include public websites, portal solutions, intranets and extranets. The platform is released under the GPL-license and it can be run on almost any platform, including Microsoft Windows, Mac OS X and most Linux distributions, and it is compatible with most major databases such as MySQL, SQL Server, Oracle and DB2.

Key features includes JSR-168 support (portlets), full multi-language support, unlimited number of sites in one installation, excellent information reuse withing a site and between sites and extensive integration capabilities. A dynamic visual page builder ensures that page can be built by non technicians and the platform also supports advanced workflows as well as very detailed access control both internally and externally.

We have dedicated ourselves to make InfoGlue the fast, reliable and cost effective way to manage and publish your organisations information on the web. It is not only userfriendly and packed with great functionality but also easy to maintain which is an important factor when it comes to total cost of ownership.

This site and the InfoGlue community is maintained by the community itself and it is totally independent from all companies and organisations. The community has only one priority and that is to offer a strong Open Source alternative on the CMS market. Many consultant firms have already started working with the platform and we will allow them to advertise their offers & services on this site as we feel they contribute to making InfoGlue a good choice for customers.

 

The InfoGlue platform is distributed under the GNU Public General License and is developed as a independent Open Source project by individuals from all over the world. In this part of the site we will present more information about the platform and it's features.

The InfoGlue project started in August 2002 and was officially released in it's first version in April 2003. It has fast become one of the leading Open Source CMS alternatives available. This is partly because of the high activity in the project but also because of the strong technical architecture and the possibility for seperation of concern in projects. Below is a sketch of the platforms parts and some aspects of how projects relate to it.

As you can see from the graphics the idea is to give the developers / users as much infrastructure as possible to speed up the implementation process in their project. The most important part of the project is as allways the initial analysis and taking a decision on what to implement. The implementation time is allways decided by how good the analysis was.

  

Download the official version of InfoGlue here

After you have downloaded the package you should follow the installation instructions found in the zipfile or the one found here.

In addition you can find nightly builds here. We strongly recommend you not to use these versions in production. Often they may not work at all depending on the state of development. Using them is at your own risk as usual.

For information about how to get the source and build InfoGlue look at our CVS-page

For documentation of the platform look at the document section under products here.

Project Home Page 

http://sourceforge.net/projects/infoglue 

More Open Source Java Resources

Open Source Java Community

Heritrix Web Crawler

Heritrix is the Internet Archive's open-source, extensible, web-scale, archival-quality web crawler project.

Heritrix (sometimes spelled heretrix, or misspelled or missaid as heratrix/heritix/ heretix/heratix) is an archaic word for heiress (woman who inherits). Since our crawler seeks to collect and preserve the digital artifacts of our culture for the benefit of future researchers and generations, this name seemed apt.

Heritrix is designed to respect the robots.txt exclusion directives and META robots tags, and collect material at a measured, adaptive pace unlikely to disrupt normal website activity.

System Runtime Requirements

Java Runtime Environment

The Heritrix crawler is implemented purely in java. This means that the only true requirement for running it is that you have a JRE installed.

The Heritrix crawler makes use of Java 5.0 features so your JRE must be at least of a 5.0 (1.5.0+) pedigree.

We currently include all of the free/open source third-party libraries necessary to run Heritrix in the distribution package. See dependencies for the complete list (Licenses for all of the listed libraries are listed in the dependencies section of the raw project.xml at the root of the src download or here on sourceforge).

Hardware

Default heap size is 256MB RAM. This should be suitable for crawls that range over hundreds of hosts.

Linux

The Heritrix crawler has been built and tested primarily on Linux. It has seen some informal use on Macintosh, Windows 2000 and Windows XP, but is not tested, packaged, nor supported on platforms other than Linux at this time.


Heritrix Home Page
http://crawler.archive.org/

Heritrix Documentation
http://crawler.archive.org/articles/user_manual/index.html

Download Heritrix
http://crawler.archive.org/downloads.html

More Java Open Source Applications

WebSPHINX ( Website-Specific Processors for HTML INformation eXtraction)

WebSPHINX ( Website-Specific Processors for HTML INformation eXtraction) is a Java class library and interactive development environment for web crawlers. A web crawler (also called a robot or spider) is a program that browses and processes Web pages automatically. WebSPHINX consists of two parts: the Crawler Workbench and the WebSPHINX class library. Crawler Workbench The Crawler Workbench is a graphical user interface that lets you configure and control a customizable web crawler. Using the Crawler Workbench, you can: * Visualize a collection of web pages as a graph * Save pages to your local disk for offline browsing * Concatenate pages together for viewing or printing them as a single document * Extract all text matching a certain pattern from a collection of pages. * Develop a custom crawler in Java or Javascript that processes pages however you want. WebSPHINX class library The WebSPHINX class library provides support for writing web crawlers in Java. The class library offers a number of features: * Multithreaded Web page retrieval in a simple application framework * An object model that explicitly represents pages and links * Support for reusable page content classifiers * Tolerant HTML parsing * Support for the robot exclusion standard * Pattern matching, including regular expressions, Unix shell wildcards, and HTML tag expressions. Regular expressions are provided by the Apache jakarta-regexp regular expression library. * Common HTML transformations , such as concatenating pages , saving pages to disk, and renaming links WebSPHINX Project Home Page - Download - Documentation http://www.cs.cmu.edu/~rcm/websphinx/

Open Source Java Community

Oracle Berkeley Database(DB) - High Performance, Pure Java, Embeddable Database Engine

Oracle Berkeley DB is a family of open source embeddable databases that allows developers to incorporate within their applications a fast, scalable, transactional database engine with industrial grade reliability and availability. As a result, customers and end-users will experience an application that simply works, reliably manages data, can scale under extreme load, but requires no ongoing database administration. As a developer, you can focus on your application and be confident that Oracle Berkeley DB will manage your persistence needs. Oracle Berkeley DB Java Edition High Performance, Pure Java, Embeddable Database Engine Oracle Berkeley DB Java Edition is a open source, embeddable, transactional storage engine written entirely in Java. Like Oracle Berkeley DB, Oracle Berkeley DB Java Edition 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. It provides an easy-to-use, programmatic interface, allowing developers to store and retrieve information quickly, simply and reliably. Oracle Berkeley DB Java Edition was designed from the ground up in Java. It takes full advantage of the Java environment to simplify development and deployment. The architecture of Oracle Berkeley DB Java Edition supports very high performance and concurrency for both read-intensive and write-intensive workloads. Berkeley DB Project Home Page http://www.oracle.com/technology/products/berkeley-db/je/index.html Berkeley DB License http://www.oracle.com/technology/software/products/berkeley-db/htdocs/licensing.html Download Berkeley DB Java Edition http://www.oracle.com/technology/software/products/berkeley-db/je/index.html

Open Source Java Community

Eclipse - Java Language IDE

Eclipse is well known for its Java IDE. However, there are Eclipse base language IDEs for most of the popular languages. Some are popular Eclipse open source project, such as CDT, and others are popular open source projects and commercial solutions.

Eclipse Java Development Tools (JDT)

The JDT project provides the tool plug-ins that implement a Java IDE supporting the development of any Java application, including Eclipse plug-ins.

The JDT project contributes a set of plug-ins that add the capabilities of a full-featured Java IDE to the Eclipse platform. The JDT plugins provide APIs so that they can themselves be further extended by other tool builders.
The JDT plugins are categorized into:

JDT APT

JDT APT adds annotation processing support to Java 5 projects in Eclipse. It provides the following features:

* Support for running annotation processors written for Sun’s command-line apt tool
* Contribution of annotation-based build artifacts during incremental build
* Contribution of problem markers for annotation-based problems

JDT Core

JDT Core defines the non-UI infrastructure. It includes:

* An incremental Java builder
* A Java Model that provides API for navigating the Java element tree. The Java element tree defines a Java centric view of a project. It surfaces elements like package fragments, compilation units, binary classes, types, methods, fields.
* Code assist and code select support
* An indexed based search infrastructure that is used for searching, code assist, type hierarchy computation, and refactoring.
* Evaluation support

The JDT Core infrastructure has no built-in JDK version dependencies.

JDT Debug

JDT Debug implements Java debugging support and works with any JDPA-compliant target Java VM. It is implemented on top of the language independent "debug model" provided by the platform debugger.

JDT debug provides the following debugging features:

* Launching of a Java VM in either run or debug mode
* Attaching to a running Java VM
* Expression evaluation in the context of a stack frame
* Scrapbook pages for interactive Java code snippet evaluation
* Dynamic class reloading where supported by Java virtual machine

JDT UI

JDT UI implements Java-specific workbench contributions:

* Packages View
* Type Hierarchy View
* Java Outline View
* Wizards for creating Java elements
* Java Editor.

The Java editor provides the following features:

* Keyword and syntax coloring
* Context specific (Java, Javadoc) code assist and code select
* Method level edit
* Margin annotations for problems, break points, or search matches
* Outliner updating as editing takes place
* API help shows Javadoc specification for selected Java element in a pop-up window
* Import assistance automatically creates and organizes import declarations
* Code formatting

The JDT UI provides refactoring support like: Extract Method or Safe Rename for Java elements that also updates references. Users can preview (and veto) individual changes stemming from a refactoring operation.

JDT searching support implements precise searches like find declarations of and/or references to packages, types, methods, and fields, scoped to the workspace, a working set, or the current selection.

JDT compare support implements a structured compare of Java compilation units showing the changes to individual Java methods. It supports to replace individual Java elements with version of element in the local history.

Eclipse Project Home Page
http://www.eclipse.org/

Download Java Specific Eclipse
http://www.eclipse.org/jdt/core/index.php
Download Eclipse

June 7, 2007

Compiere ERP & CRM

Compiere is open source Enterprise Resource Planning(ERP) and Customer Relationship Management(CRM) software that provides a seamless 360-degree view of your company, its customers and vendors. For years only large corporations have been able to enjoy the benefits of ERP systems. Now, Compiere ERP and CRM puts the power of timely and consistent communications within reach of small to medium-sized businesses by offering a superior ERP system that is affordable, adaptable, and scalable…ensuring you always have exactly the ERP solution your company needs. Visit our ERP FAQ to discover how Compiere can help your company grow. The Compiere Difference: Easier and Affordable ERP Compiere is changing the economics of business solutions by making Enterprise Resource Planning (ERP) and Customer Relationship Management (CRM) easier. Easier to acquire. Easier to implement. Easier to extend. Easier to change. Typical business solution software vendors aren't focused on making their solutions easier, more adaptable or more affordable. Instead, they spend over 50 percent of their revenues convincing you to buy their products (sales and marketing) and less than 10% of revenues on innovation. This unbalanced business approach has lead to a consolidated software industry providing customers with fewer choices and even less innovation. Compiere is taking a fresh and balanced approach to business solution software. We develop Compiere in the open and distribute it through open source licensing.

You are free to evaluate and use the open source version of Compiere without restriction. To support your demanding use of Compiere, we provide a range of valuable fee-based services from training and technical support to automated migration tools and certification of technology platforms and implementation partners. Our network of authorized partners add additional value through their focused expertise in solution design, integration and local requirements. In this model everyone wins through expanded choice, reduced acquisition risk, more innovation and valuable customer-centric services.

Easier Doesn't Mean Simple

Compiere offers powerful capabilities to automate all of your financial, distribution, sales and service functions to improve business efficiency and customer satisfaction. Applications are built on an innovative model-based development platform that gives customers unprecedented adaptability, rapid deployment and low cost of ownership. The solution supports the needs of local and global businesses alike, with robust support for multiple currencies, accounting rules, tax codes, organizational structures and languages required by your business. If you only do business in one language or currency, we handle that as well. Compiere, Inc. offers commercial backing, support and services to its global network of nearly 100 authorized partners across 25 countries. Compiere is privately held and headquartered in Redwood Shores, Calif.

What is ERP and CRM?

ERP stands for Enterprise Resource Planning and it is the smart solution to all your business management needs. ERP applications typically consist of modules such as Marketing and Sales, Field Service, Production, Inventory Control, Procurement, Distribution, Human Resources, Finance and Accounting. CRM stands for Customer Relationship Management. CRM software supports your business process to find, get, and retain customers. CRM applications typically consist of modules such as Sales Force Automation, Call Management, and Self Service.

Features : Compiere ERP software is a cross platform Java J2EE solution that provides:

* fully integrated ERP and CRM solutions
* both front-office (POS, Web Store) and back-office functionality
* inventory management
* automated accounting
* professional services solution
* managed distribution networks
* streamlined order processing

More Product Features

Compiere is an integrated Enterprise Resource Planning (ERP) and Customer Relations Management (CRM) software solution that combines the power of point of sales (POS), distribution, inventory, e-commerce, accounting, and workflow systems within one robust application. Compiere is fully customizable to your enterprise and was created to handle the challenges of global commerce.

Point Of Sales

Compiere's center piece is a state-of-the-art point of sales software (POS Software) with an integrated POS Terminal. At your fingertips, you have all the required information to improve productivity in the front office while also easily accessing the information for efficient distribution management in the back office.

Distribution and Inventory
Use our distribution and inventory solutions to manage the supply chain within your organization as well with suppliers and customers. Supply Chain Management covers all material management activities including inventory receipts, shipments, moves and counts within a client and its organizations, as well as to suppliers and customers.

E-Commerce
The Compiere Web Store provides all you need to run your web presence. The information is shared with the standard application, so no synchronization or extra integration work is required. The web store components Compiere provides can be customized to the look-and-feel of your web site.

Accounting
Our accounting solutions cater to the needs of your enterprise, no matter what currency or schema you use. Compiere even provides the flexibility to account in one or more Accounting Schema in parallel.

Workflow
In contrast to all other known ERP and CRM applications, Compiere is based on Workflow. The Compiere Workflow Engine is Compiere's core transaction management. That means that all processes in Compiere are automatically workflow enabled and easy to extend and modify. As the Compiere workflow solution is completely integrated rather than being built "on top" of the application, it is much easier to maintain and provides more functionality then the external or ad-on workflow offerings of other ERP and CRM vendors.

Product Comparisons
There are several companies providing product comparisons for a fee. Examples are the Accounting Software Library and Accounting Software Comparison or ERP Evaluation and Vendor Showcase You will see that Compiere is extremely competitive and has certainly the best ROI. If we are lacking functionality, check with us. Our development cycle is very fast and it might already be available, but not reflected in the comparisons.

Compiere Project Home Page http://www.compiere.org

Download Compiere http://www.compiere.org/download/index.html

Installation Requirements Server Requirements Client Requirements

June 8, 2007

IzPack Java Installer

IzPack is an installers generator for the Java platform. It produces lightweight installers that can be run on any operating system where a Java virtual machine is available. Depending on the operating system, it can be launched by a double-click or a simple java -jar installer.jar from a shell. The most common use is to distribute applications for the Java platform, but you can also use it for other kinds of projects. The main benefit of IzPack is that it provides a clean and unique way of distributing a project to users using different operating systems. IzPack is reported to run on:

* Unix-like systems, mostly Linux and FreeBSD variants
* Mac OS X
* Windows 2000, XP and Vista.

A big care has been put in making IzPack as small as possible in order to reduce the weight of IzPack itself in the final installer archive. Also, IzPack has been designed around modularity and flexibility. As a consequence, you are able to specify how your installer should be by selecting the panels that you want to show to the final user. Sometimes there are even several panels for the same usage so that you can pick the one that suits the best your needs. If ever you don’t find your way through the available panels, you can still develop your own ones with the nice and easy IzPack API.

Main features:

* XML-based installer descriptors
* Uses the maximum Jar archives compression level
* Apache Ant integration
* Great flexibility and modularity, it is very easy to extend IzPack
* No native code is required, but you can extend IzPack with native code
* Shortcuts creation system (Win32 and FreeDesktop.org)
* Flexible and powerful user input panel
* Automatic uninstaller creation
* Easy localization with XML langpacks: many translations are provided by default
* Variables substitution system
* OS-specific scripts interaction
* ... and many more!

Licensing

IzPack is licensed under the terms of the liberal opensource Apache Software License version 2.0.

IzPack Project Home Page
http://izpack.org/

Download IzPack
http://izpack.org/downloads

June 9, 2007

Apache Struts - Web Framework

Apache Struts is a free open-source framework for creating Java web applications.

Web applications differ from conventional websites in that web applications can create a dynamic response. Many websites deliver only static pages. A web application can interact with databases and business logic engines to customize a response.

Web applications based on JavaServer Pages sometimes commingle database code, page design code, and control flow code. In practice, we find that unless these concerns are separated, larger applications become difficult to maintain.

One way to separate concerns in a software application is to use a Model-View-Controller (MVC) architecture. The Model represents the business or database code, the View represents the page design code, and the Controller represents the navigational code. The Struts framework is designed to help developers create web applications that utilize a MVC architecture.

The framework provides three key components:

* A "request" handler provided by the application developer that is mapped to a standard URI.
* A "response" handler that transfers control to another resource which completes the response.
* A tag library that helps developers create interactive form-based applications with server pages.

The framework's architecture and tags are buzzword compliant. Struts works well with conventional REST applications and with nouveau technologies like SOAP and AJAX.

The Apache Struts Project is the open source community that creates and maintains the Apache Struts framework. The project consists of a diverse group of volunteers who share common values regarding collaborative, community-based open source development. The Apache Struts Project is proud to share these values with our parent organization: The Apache Software Foundation.

The project is called "Struts" because the framework is meant to furnish the "invisible underpinnings" that support professional application development. Struts provides the glue that joins the various elements of the standard Java platform into a coherent whole. Our goal is to leverage existing standards by producing the missing pieces we need to create enterprise-grade applications that are easy to maintain over time.

The Apache Struts Project offers two major versions of the Struts framework. Struts 1 is recognized as the most popular web application framework for Java. The 1.x framework is mature, well-documented, and widely supported. Struts 1 is the best choice for teams who value proven solutions to common problems.

Struts 2 was originally known as WebWork 2. After working independently for several years, the WebWork and Struts communities joined forces to create Struts 2. The 2.x framework is the best choice for teams who value elegant solutions to difficult problems.

Model-View-Controller(MVC)

Web applications based on JavaServer Pages sometimes commingle database code, page design code, and control flow code. In practice, we find that unless these concerns are separated, larger applications become difficult to maintain.

One way to separate concerns in a software application is to use a Model-View-Controller (MVC) architecture. The Model represents the business or database code, the View represents the page design code, and the Controller represents the navigational code.

The term "MVC" originated with the SmallTalk Model-View-Controller framework. In Smalltalk MVC, the View updates itself from the Model, via the "Observer" pattern. The original MVC pattern is like a closed loop: The View talks to the Controller, which talks to the Model, which talks to the View.

But, a direct link between the Model and the View is not practical for web applications, and we modify the classic MVC arrangement so that it would look less like a loop and more like a horseshoe with the controller in the middle.

In the MVC/Model 2 design pattern, application flow is mediated by a central Controller. The Controller delegates requests - in our case, HTTP requests - to an appropriate handler. The handlers are tied to a Model, and each handler acts as an adapter between the request and the Model. The Model represents, or encapsulates, an application's business logic or state. Control is usually then forwarded back through the Controller to the appropriate View. The forwarding can be determined by consulting a set of mappings, usually loaded from a database or configuration file. This provides a loose coupling between the View and Model, which can make applications significantly easier to create and maintain.

While MVC is a convenient paradigm, many workers find that applcations may utilize more than three layers. For example, within the Model, there is often distinct business logic and data access layers.

The framework provides the control layer for a Model 2 web applications. Developers can use this layer with other standard technologies to build the business, data access, and presentation layers.

Apache Struts Features

* Build!
o Easy startup - Jumpstart new projects with our bootstrap tutorial and template application or Maven archetype.
o Improved Design - Code clean against HTTP-independant framework interfaces.
o Enhanced Tags - Code less with stylesheet-driven form tags that provide their own markup.
o Stateful Checkboxes - Avoid special handling with smart checkboxes that know when they are toggled.
o Flexible Cancel Buttons - Go directly to a different action on cancel.
o First-class AJAX support - Add interactivity and flexibility with AJAX tags that look and feel just like standard Struts tags.
o Easy Spring integration - Inject dependencies into Actions using Spring without glue code or red tape. (Plexus support also available.)
o Enhanced Results - Do more with speciality results for JasperReports, JFreeChart, Action chaining, and file downloading.
o POJO forms - No more ActionForms! Use any JavaBean to capture form input or put properties directly on an Action class. Use both binary and String properties!
o POJO Actions - Use any class as an Action class -- even the interface is optional!
* Deploy!
o Easy plugins - Add framework extensions by dropping in a JAR. No manual configuration required! Bundled plugins add support for JavaServer Faces, JasperReports, JFreeChart, Tiles, and more ...
o Integrated profiling - Peek inside Struts2 to find where the cycles are going!
o Precise Error Reporting - Flip directly to the location and line of an error.
* Maintain!
o Easy-to-test Actions - Test Struts2 Actions directly, without resorting to mock HTTP objects.
o Intelligent Defaults - Skip obvious and redundant settings. Most framework configuration elements have a default value that we can set and forget. Say it once!
o Easy-to-customize controller - Customize the request handling per action, if desired. Struts2 only does what you want it to do!
o Integrating Debugging - Research problem reports with built-in debugging tools.
o Easy-to-tweak tags - Customize tag markup by editing a FreeMarker template. No need to grok the taglib API! JSP, FreeMarker, and Velocity tags are fully supported.

Struts Home Page
http://struts.apache.org/

Struts Documentation
http://struts.apache.org/primer.html

Download Struts 2.x
http://struts.apache.org/2.x/index.html
Struts 2.x Documents

June 13, 2007

Ivata Groupware & Collaboration

ivata groupware is a free Groupware/Exchange/Intranet system. It comes with a web-based front-end, and you can use ivata groupware to:

* find contacts in team and private address books
* post articles & notes
* comment on articles
* receive notifications via mail
* plan meetings and other events in the calendar
* access email via the web

How Ivata Works?

ivata groupware is a free, open source, standards based groupware solution.

Out of the box, it comes with an address book, webmail, calendar, content management system and a virtual drive. Different versions of files stored in the drive and as attachments are automatically saved.

ivata groupware is a tool designed for teams who need a solid groupware solution which they can extend to meet their needs exactly.

Since it uses robust J2EE software as its based, it is very scalable and suitable for both small teams as well as deployment across large organizations.

You basically just need maven, and it will download other dependencies automatically. The only exception to this are the JavaMail and Java Activation Framework, which are both restricted by a license from Sun.

ivata groupware is built and tested on various flavors of Linux and Windows.. It will also work on other flavors of UNIX with some minor modification.

We like to keep fairly up to date. The current release uses assertions, so it requires at least JVM 1.4+, but it has also been tested with 1.5.1.

ivata groupware is distributed under the terms of the GNU General Public License (vesion 2). This is a free license which enables the ivata groupware community to benefit from both the program and the source code behind it.

Dual licensing of the ivata groupware source code provides open and free access to the technology both for the GPL community and for other developers or companies that cannot use the GPL. We use the same practise as other open-source projects like Perl, OpenOffice.org and Mozilla. It lets ivata offer commercial versions and makes sure ivata will be able to defend the GPL license, if necessary.

All contributions to the source code will require that the code is automatically available under the GPL. ivata asks that developers fill out the Joint Copyright Assignment so that the copyright is unified. The JCA ensures that ivata can defend license violations if necessary. ivata is absolutely committed to the dual license mechanism of GPL + proprietary for source code and will remain so committed.

No, once a program has been released under the terms of the GPL license it is always available under those terms. ivata is firmly committed to keeping this project open and available to the community.

Ivata groupware Project Home Page
http://groupware.ivata.org/

Ivata installation notes
http://groupware.ivata.org/install.html

Download Ivata Groupware
http://sourceforge.net/project/showfiles.php?group_id=99938

Ivata Documentation
http://groupware.ivata.org/develop/documentation.html

Ivata project demo
http://groupware.ivata.org/demo

June 14, 2007

JETeam: Enterprise Teamwork

JETeam is a J2EE application that aims to help members of a team working together by offering enterprise services (follow ups of tasks by managers or developers, notification when the status of the project change and so on) and is 100% pure java.

This project has been started with the idea that in order to improve the quality of project developments, all members (manager, coach, developers...) working on one (or more) project(s) need to have a single point of communication.

With this we mean that JETeam groups into one application the following services (not a full description):

* keeping up to date with the current status of each project.
* creation of tasks that are assigned to developers.
* attaching a note to any task when, for instance, a problem will delay its completion.
* receiving notifications when the project's status has been udpated.
* keeping a knowledge base of all solutions/problems encountered during the project development.
* and lots more...

JETeam Features

Free :

* The complete project is under the GPL licence
* All thrid-party libraries are under the same licence
* Open-source
* 100% pure Java
* Built to work with other open-source projects, however, commercial application can equally easy be plugged in (eg. Oracle DB instead of mySQL)

Portable :

* Completely written in Java, using open-source libraries licenced under the GPL licence
* Conforming to J2EE specifications
* Using EJB 2.x specification (other technologies such as JDO are pending)
* Runs on every platform supporting Java 2, including Windows 95/98/ME/NT/2000/XP, Linux, Solaris, HP-UX
* Works with all JDBC compliant databases, including Oracle, mySQL, Hypersonic, Firebird, DB2, Interbase, PostgreSQL, and many more...
* Works with all JSP 1.2 compatible servlet containers, such as Tomcat and Jetty (including JBossWeb)
* Front-end built in Struts 1.1 MVC framework

Easy to maintain :

* Open-source project on SourceForge.net
* Built on well-known and proven architectures and design patterns
* All modules (including third-party technologies) are well documented
* The complete server can be configured using Java Management Extensions (JMX), JETeam itself comes with some MBeans that will make it easier to perform operations without restarting the server. Operations include uploading the initial-load, viewing JETeam specific log messages etc... (only tested with JBoss). Managing will be as simple as opening your web browser, surfing to the server configuration screen, logging in and performing the desired operations. No need to open a console and going into the application server specific details.

Secure :

* Using standardized Java Authentication and Authorization Service Framework (JAAS)
* All communication over secure SSL link
* Completely configurable and customizable security layer
* Role based access control, using privileges and permissions on the level of individual method calls
* Persistence layer completely shielded from direct client access
* Authors have 3+ professional years of experience with Cryptography/PKI and security in general

Customizable :

* Source code can freely be changed and recompiled
* Design built on generic use-cases, project can be used in many different businesses
* Superfast development cycles using AndroMDA, XDoclet, Ant: most of the code is auto-generated, the only implementation is the business logic, the result is very stable and readable source code.

Tested with :

* JBoss, Weblogic, Resin, WebSphere
* mySQL, Hypersonic, Firebird, Oracle 7/8/9
* Netscape, Internet Explorer, Konqueror, Opera
* Windows, Linux, HP-UX, Solaris

Documentation :

* Javadoc for all source code built from the CVS
* UML diagram for front-end and back-end
* Homepage containing most recently written documentation

JETeam Project Home Page
http://jeteam.sourceforge.net/

JETeam Project Demo Page
http://jeteam.sourceforge.net/demo.html

Download JETeam Enterprise Teamwork

http://sourceforge.net/project/showfiles.php?group_id=61226&package_id=57540&release_id=204474

More Open Source Groupware & Collaboration Software

June 17, 2007

Google Web Toolkit - Build AJAX apps in the Java language

Google Web Toolkit (GWT) is an open source Java software development framework that makes writing AJAX applications like Google Maps and Gmail easy for developers who don't speak browser quirks as a second language. Writing dynamic web applications today is a tedious and error-prone process; you spend 90% of your time working around subtle incompatibilities between web browsers and platforms, and JavaScript's lack of modularity makes sharing, testing, and reusing AJAX components difficult and fragile.

GWT lets you avoid many of these headaches while offering your users the same dynamic, standards-compliant experience. You write your front end in the Java programming language, and the GWT compiler converts your Java classes to browser-compliant JavaScript and HTML.

What is Google Web Toolkit?

Google Web Toolkit (GWT) is an open source Java development framework that lets you escape the matrix of technologies that make writing AJAX applications so difficult and error prone. With GWT, you can develop and debug AJAX applications in the Java language using the Java development tools of your choice. When you deploy your application to production, the GWT compiler translates your Java application to browser-compliant JavaScript and HTML.

Here's the GWT development cycle:

1. Use your favorite Java IDE to write and debug an application in the Java language, using as many (or as few) GWT libraries as you find useful.
2. Use GWT's Java-to-JavaScript compiler to distill your application into a set of JavaScript and HTML files that you can serve with any web server.
3. Confirm that your application works in each browser that you want to support, which usually takes no additional work.


Why Translate Java Code to JavaScript?

Java technologies offer a productive development plaform, and with GWT, they can instantly become the basis of your AJAX development platform as well. Here are some of the benefits of developing with GWT:

* You can use all of your favorite Java development tools (Eclipse, IntelliJ, JProfiler, JUnit) for AJAX development.
* Static type checking in the Java language boosts productivity while reducing errors.
* Common JavaScript errors (typos, type mismatches) are easily caught at compile time rather than by users at runtime.
* Code prompting/completion is widely available.
* Automated Java refactoring is pretty snazzy these days.
* Java-based OO designs are easier to communicate and understand, thus making your AJAX code base more comprehensible with less documentation.


Google Web Toolkit Features

* Dynamic, reusable UI components
Create a Widget by compositing other Widgets. Lay out Widgets automatically in Panels. Send your Widget to other developers in a JAR file.

* Really simple RPC
To communicate from your web application to your web server, you just need to define serializable Java classes for your request and response. In production, GWT automatically serializes the request and deserializes the response from the server. GWT's RPC mechanism can even handle polymorphic class hierarchies, and you can throw exceptions across the wire.

* Browser history management
No, AJAX applications don't need to break the browser's back button. GWT lets you make your site more usable by easily adding state to the browser's back button history.

* Real debugging
In production, your code is compiled to JavaScript, but at development time it runs in the Java virtual machine. That means when your code performs an action like handling a mouse event, you get full-featured Java debugging, with exceptions and the advanced debugging features of IDEs like Eclipse.

* Browser compatible
Your GWT applications automatically support IE, Firefox, Mozilla, Safari, and Opera with no browser detection or special-casing within your code in most cases.

* JUnit integration
GWT's direct integration with JUnit lets you unit test both in a debugger and in a browser...and you can even unit test asynchronous RPCs.

* Internationalization
Easily create efficient internationalized applications and libraries.

* Interoperability and fine-grained control
If GWT's class library doesn't meet your needs, you can mix handwritten JavaScript in your Java source code using our JavaScript Native Interface (JSNI).

* Google API Library: Google Gears support New!
We are in the process of building support for using Google APIs in GWT applications. Initially, we are providing support for Google Gears, the recently-launched developer product that extends the browser to allow developers to make web-based applications function even while offline. If you would like to download this library please visit the open source project. We are planning to add support for other Google APIs; if you'd like to help, please check out Making GWT Better.

* Completely Open Source
All of the code for GWT is available under the Apache 2.0 license. If you are interested in contributing, please visit Making GWT Better.

Google Web Toolkit Project Home Page
http://code.google.com/webtoolkit/

Download Google Web Toolkit Project Home Page
http://code.google.com/webtoolkit/download.html

GWT Demos & Examples
http://code.google.com/webtoolkit/documentation/examples/

Google Web Toolkit Project Documentation
http://code.google.com/webtoolkit/documentation/

June 18, 2007

Echo2 Web Framework

Echo2 is the next-generation of the Echo Web Framework, a platform for developing web-based applications that approach the capabilities of rich clients. The 2.0 version holds true to the core concepts of Echo while providing dramatic performance, capability, and user-experience enhancements made possible by its new Ajax-based rendering engine.

Echo2 removes the developer from having to think in terms of "page-based" applications and enables him/her to develop applications using the conventional object-oriented and event-driven paradigm for user interface development. Knowledge of HTML, HTTP, and JavaScript is not required. Applications may be hosted using any Java servlet container. Echo2, like its predecessor, is open-source software distributed under the terms of the Mozilla Public License (or, if preferred, the GNU LGPL License).

Module Divisions






The Echo2 framework is divided into three distinct modules: the Application Framework, the Web Rendering Engine, and the Web Application Container. Coupling between the modules are kept to a minimum. The only dependency relationship amongst the modules is that the Web Application Container is dependent upon both the Application Framework and Web Rendering Engine modules. This dependency is NOT reciprocated.

Echo2 Home Page
http://www.nextapp.com/platform/echo2/echo/

Download Echo2
http://www.nextapp.com/platform/echo2/echo/download/

Echo2 Documentation
http://www.nextapp.com/platform/echo2/echo/doc/

Direct Web Remoting - DWR

Direct Web Remoting(DWR) allows Javascript in a browser to interact with Java on a server and helps you manipulate web pages with the results.

DWR is Easy Ajax for Java

DWR is a Java open source library which allows you to write Ajax web sites.

It allows code in a browser to use Java functions running on a web server just as if it was in the browser.

DWR consists of two main parts:

* A Java Servlet running on the server that processes requests and sends responses back to the browser.
* JavaScript running in the browser that sends requests and can dynamically update the webpage.

DWR works by dynamically generating Javascript based on Java classes. The code does some Ajax magic to make it feel like the execution is happening on the browser, but in reality the server is executing the code and DWR is marshalling the data back and forwards.

This method of remoting functions from Java to JavaScript gives DWR users a feel much like conventional RPC mechanisms like RMI or SOAP, with the benefit that it runs over the web without requiring web-browser plug-ins.

Java is fundamentally synchronous where Ajax is asynchronous. So when you call a remote method, you provide DWR with a callback function to be called when the data has been returned from the network.

The diagram shows how DWR can alter the contents of a selection list as a result of some Javascript event like onclick.



DWR dynamically generates an AjaxService class in Javascript to match some server-side code. This is called by the eventHandler. DWR then handles all the remoting details, including converting all the parameters and return values between Javascript and Java. It then executes the supplied callback function (populateList) in the example below which uses a DWR utility function to alter the web page.

DWR helps you in producing highly interactive web-sites by providing some Javascript libraries to help with DHTML and by giving you a set of examples to copy from.

Direct Web Remoting(DWR) Project Home Page
http://getahead.org/dwr

Download Direct Web Remoting(DWR)
http://getahead.org/dwr/download

Direct Web Remoting(DWR) Documentation
http://getahead.org/dwr/documentation

June 24, 2007

Bugtracker - Complete Bug & Issue Management System

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

Bugtracker Project Home Page
http://sourceforge.net/projects/bugtracker/

Download Bugtracker
http://sourceforge.net/project/platformdownload.php?group_id=10035

Scarab Project

Scarab is a highly customizable artifact tracking system supporting the following feature set:

* Standard features
data entry, queries, reports, notifications to interested parties, collaborative accumulation of comments, dependency tracking.

* Fully customizable
Scarab has fully and free customizable and unlimited numbers of
o Modules (e.g. your various projects)
o Artifact types (e.g. "Defect", "Enhancement", "Requirement", etc)
o Attributes (e.g. "Operating System", "Status", "Priority", etc)
o Attribute options

All aspects of your artefact management can be defined on a per Module basis so that each of your modules is configured for your specific tracking requirements.

* Multi lingual
Scarab uses java resource bundle technology and is shipped with the language localizations for de, en, es, fr, it, ja, ko, nl, pl, pt, ru and zh. The used languages are all available simultaneously. Users can choose their individual language based on their browser language preference settings.

* Based on application server technologies
Scarab is built using Java Servlet technology for speed, scalability, maintainability, and ease of installation.

* Import/Export interface via XML
That allows an easy migration from other tracking systems (e.g. Bugzilla).

* Modular code design
That allows manageable modifications of existing and new features over time.

* Integrated customization UI
Scarab is fully customizable through a set of administrative pages.

* Easily modifiable UI look and feel

* Integrateable
Scarab can be integrated into larger systems by re-implementing key interfaces.

* Self contained
Scarab is a ready to use issue management system.

Scarab Project Home Page
http://scarab.tigris.org/

Download Scarab
http://scarab.tigris.org/servlets/ProjectDocumentList

June 26, 2007

Apache Lucene

Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.

Apache Lucene is an open source project available for free download. Please use the links on the left to access Lucene.

Features Lucene offers powerful features through a simple API:

Scalable, High-Performance Indexing

* over 20MB/minute on Pentium M 1.5GHz
* small RAM requirements -- only 1MB heap
* incremental indexing as fast as batch indexing
* index size roughly 20-30% the size of text indexed

Powerful, Accurate and Efficient Search Algorithms

* ranked searching -- best results returned first
* many powerful query types: phrase queries, wildcard queries, proximity queries, range queries and more
* fielded searching (e.g., title, author, contents)
* date-range searching
* sorting by any field
* multiple-index searching with merged results
* allows simultaneous update and searching

Cross-Platform Solution

* Available as Open Source software under the Apache License which lets you use Lucene in both commercial and Open Source programs
* 100%-pure Java
* Implementations in other programming languages available that are index-compatible

Lucene implementations in languages other than Java:

CLucene - Lucene implementation in C++
dotLucene - Lucene implementation in .NET
Lucene4c - Lucene implementation in C LuceneKit - Lucene implementation in Objective-C (Cocoa/GNUstep support)
Lupy - Lucene implementation in Python (RETIRED)
NLucene - another Lucene implementation in .NET (out of date)
Zend Search - Lucene implementation in the Zend Framework for PHP 5
Plucene - Lucene implementation in Perl KinoSearch - a new Lucene implementation in Perl PyLucene - GCJ-compiled version of Java Lucene integrated with Python
MUTIS - Lucene implementation in Delphi Ferret - Lucene implementation in Ruby

Lucene Project Home Page
http://lucene.apache.org/java/

Download Lucene Search Engine http://lucene.apache.org/java/docs/developer-resources.html

Lucene Documentation http://lucene.apache.org/java/docs/api/index.html

Egothor Search Engine

Egothor is an Open Source, high-performance, full-featured text search engine written entirely in Java. It is technology suitable for nearly any application that requires full-text search, especially cross-platform. It can be configured as a standalone engine, metasearcher, peer-to-peer HUB, and, moreover, it can be used as a library for an application that needs full-text search.

Key features of egothor

* Written in JAVA for cross platform compatibility.
* New dynamization algorithm for fast index updating.
* Fully 64-bit kernel
* Queries can be solved in a parallel manner
* Able to recognize the most familiar file formats: HTML, PDF, PS, and Microsoft's DOC, and XLS.
* High capacity robot which supports robots.txt recommendation.
* The best compression methods are used, i.e. Golomb, Elias-Gamma, Block coding.
* Based on the extended Boolean model which can operate as the Vector or Boolean models.
* Universal stemmer that processes any language.

The engine implements a special algorithm that lowers demand for I/O operation during index updating. Other Open Source packages do not offer the same feature and use suboptimal solutions.

The engine may solve queries in a parallel manner since egothor 1.x. We are not aware of any other Open Source package that supports the same feature in its kernel.

The kernel is fully 64bit. There are not any other technical limits.

Egothor Search Engine Home Page
http://www.egothor.org/

Download Egothor Search Engine Home Page
http://www.egothor.org/download.shtml

June 28, 2007

Apache Xerces

The Xerces Java Parser 1.4.4 supports the XML 1.0 recommendation and contains advanced parser functionality, such as support for the W3C's XML Schema recommendation version 1.0, DOM Level 2 version 1.0, and SAX Version 2, in addition to supporting the industry-standard DOM Level 1 and SAX version 1 APIs.

Apache Xerces is a collaborative software development project dedicated to providing robust, full-featured, commercial-quality, and freely available XML parsers and closely related technologies on a wide variety of platforms supporting several languages. This project is managed in cooperation with various individuals worldwide (both independent and company-affiliated experts), who use the Internet to communicate, plan, and develop XML software and related documentation.

Apache Xerces exists to promote the use of XML. We view XML as a compelling paradigm that structures data as information, thereby facilitating the exchange, transformation, and presentation of knowledge. The ability to transform raw data into usable information has great potential to improve the functionality and use of information systems. We intend to build freely available XML parsers and closely related technologies in order to engender such improvements.

The Apache Xerces parsers support standard APIs (formal, de facto, or proposed). They are designed to be high performance, reliable, and easy to use. To facilitate easy porting of ideas between languages, the API's supported should be as similar as possible, given the constraints of the languages and existing architectures. Apache Xerces parsers should also be designed to work efficiently with other Apache projects that deal with XML whenever possible.

We believe that the best way to further these goals is by having both individuals and corporations collaborate on the best possible infrastructure, APIs, code, testing, and release cycles. Components must be vendor neutral and usable as core components for all.

In order to achieve a coherent architecture between Apache Xerces parsers and other components and applications, standards (formal or de facto) will be used as much as possible for both protocols and APIs. Where appropriate, experiences and lessons learned will be fed back to standards bodies in an effort to assist in the development of those standards. We will also encourage the innovation of new protocols, APIs, and components in order to seed new concepts not yet defined by standards.

Apache Xerces Project Home Page
http://xerces.apache.org/xerces-j/

Download Apache Xerces
http://archive.apache.org/dist/xml/xerces-j/

Apache XMLBeans

XMLBeans is a technology for accessing XML by binding it to Java types. XMLBeans provides several ways to get at the XML, including:

* Through XML schema that has been compiled to generate Java types that represent schema types. In this way, you can access instances of the schema through JavaBeans-style accessors after the fashion of "getFoo" and "setFoo".

The XMLBeans API also allows you to reflect into the XML schema itself through an XML Schema Object model.
* A cursor model through which you can traverse the full XML infoset.
* Support for XML DOM.


XMLBeans provides intuitive ways to handle XML that make it easier for you to access and manipulate XML data and documents in Java.

Characteristics of XMLBeans approach to XML:

* It provides a familiar Java object-based view of XML data without losing access to the original, native XML structure.

* The XML's integrity as a document is not lost with XMLBeans. XML-oriented APIs commonly take the XML apart in order to bind to its parts. With XMLBeans, the entire XML instance document is handled as a whole. The XML data is stored in memory as XML. This means that the document order is preserved as well as the original element content with whitespace.

* With types generated from schema, access to XML instances is through JavaBean-like accessors, with get and set methods.

* It is designed with XML schema in mind from the beginning — XMLBeans supports all XML schema definitions.

* Access to XML is fast.

The starting point for XMLBeans is XML schema. A schema (contained in an XSD file) is an XML document that defines a set of rules to which other XML documents must conform. The XML Schema specification provides a rich data model that allows you to express sophisticated structure and constraints on your data. For example, an XML schema can enforce control over how data is ordered in a document, or constraints on particular values (for example, a birth date that must be later than 1900). Unfortunately, the ability to enforce rules like this is typically not available in Java without writing custom code. XMLBeans honors schema constraints.

Note: Where an XML schema defines rules for an XML document, an XML instance is an XML document that conforms to the schema.

You compile a schema (XSD) file to generate a set of Java interfaces that mirror the schema. With these types, you process XML instance documents that conform to the schema. You bind an XML instance document to these types; changes made through the Java interface change the underlying XML representation.

Previous options for handling XML include using XML programming interfaces (such as DOM or SAX) or an XML marshalling/binding tool (such as JAXB). Because it lacks strong schema-oriented typing, navigation in a DOM-oriented model is more tedious and requires an understanding of the complete object model. JAXB provides support for the XML schema specification, but handles only a subset of it; XMLBeans supports all of it. Also, by storing the data in memory as XML, XMLBeans is able to reduce the overhead of marshalling and demarshalling.

XMLBeans Project Home Page
http://xmlbeans.apache.org/

Download XMLBeans
http://xmlbeans.apache.org/documentation/conInstallGuide.html

OpenCms

OpenCms is a professional level Open Source Website Content Management System. OpenCms helps to create and manage complex websites easily without knowledge of html. An integrated WYSIWYG editor with a user interface similar to well known office applications helps the user creating the contents, while a sophisticated template engine enforces a site-wide corporate layout. As true Open Source software, OpenCms is completely free of licensing costs.

OpenCms is based on Java and XML technology. Therefore it fits perfectly into almost any existing modern IT infrastructure. OpenCms runs in a "full open source" environment (e.g. Linux, Apache, Tomcat, MySQL) as well as on commercial components (e.g. Windows NT, IIS, BEA Weblogic, Oracle DB).

To learn more about OpenCms, take a look at the Guided Tour available in the Support section. To participate in the OpenCms project, check out the Development section. To download OpenCms, use the links on the right side of this page or check out the Download section.

Features of the OpenCms:

* An experimental update Wizard for OpenCms 6 installations on MySQL is available [new in RC 2].
* Support for the PostgreSQL database now included [new in RC 2].
* Improved backward compatibility with OpenCms version 6 [new in RC 2].
* The internal link management has been greatly improved.
* If files (or folders) are moved / renamed, all links to these files are now kept intact.
* Deleting a resource that is linked by other resources does now display a warning / confirmation dialog.
* The new "Content Relationship Engine" (CRE) allows defining arbitrary relations between OpenCms resources.
* Native support for WebDAV access to the OpenCms VFS has been added.
* Link management support has been added in editors for standard HTML tags 'area', 'object' & 'embed'.
* Publishing of resources is now done using a queue, so a user can continue to work after publishing has started.
* The concept of "Organization Units" (OUs) has been added to the internal user management.
* System permissions are now based on a comlete new set of "Roles".
* It is now possible to delegate management of users / groups in OUs to Sub-Administrators.
* A "switch user" (su) function for Administrators in the OpenCms Workplace is now available.
* Many usability improvements for the OpenCms Workplace have been made, especially concerning the handling of other user locks.
* Many dialogs in the OpenCms Workplace are more responsive because of the use of Ajax technologies.
* The context menus in the Workplace are now cascading and can be configured individually based on the users permissions.
* A new "Undelete" function is available on the context menu to restore deleted resources, including complete deleted subtrees.
* The full text search has been greatly improved so that individual resource properties or fields from XML content can be searched directly.
* A "time warp" feature in the Workplace now allows users to view resources with date expired / date released settings.
* Auto correction for structured XML contents now allows changes to the XML schema of existing resources.
* A configurable search tool is now available for content managers in the Workplace.
* A permalink handler for resources is available for external references in case a resource is moved or renamed.
* The core database structure has been optimized.
* JSP 2.0 and Servlet 2.4 are now used by default.

OpenCms Project Home Page
http://www.opencms.org/opencms/en/index.html

Download OpenCms
http://www.opencms.org/opencms/en/download/index.html

About June 2007

This page contains all entries posted to Open Source Java Community and OpenJDK Resources. Latest News, podcasts, Updates, downloads. in June 2007. They are listed from oldest to newest.

May 2007 is the previous archive.

July 2007 is the next archive.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.35