Main

December 31, 2009

Using Cassandra with Scala and Akka

Using Cassandra with Scala and Akka: "With all this talk about NoSQL and new programming languages, I though I’d try getting Cassandra to work with Scala. Always being interested in productivity, I wanted to know how easy and concise an integration would be."

..via Code Monkeyism..

September 22, 2009

Google Noop

"Noop (pronounced noh-awp, like the machine instruction) is a new language experiment that attempts to blend the best lessons of languages old and new, while syntactically encouraging what we believe to be good coding practices and discouraging the worst offenses. Noop is initially targeted to run on the Java Virtual Machine."

.. no subclassing but dependency injection .. based on the jvm and scala .. interesting ..

April 19, 2009

Google App Engine : Java Support

"Google App Engine is unveiling its second language: Java. This release includes an early look at our Java runtime, integration with Google Web Toolkit, and a Google Plugin for Eclipse, giving you an end-to-end Java solution for AJAX web applications"

.. some documentation .. just deployed my first little app .. pretty easy .. and if you stay within some limits it is free (wink wink Amazon) .. perfect ..

December 02, 2007

SymmetricDS

"SymmetricDS is web-enabled, database independent, data synchronization/replication software. It uses web and database technologies to replicate tables between relational databases in near real time. The software was designed to scale for a large number of databases, work across low-bandwidth connections, and withstand periods of network outage."

.. pretty impressive tool, functionality .. and it's open source ..

November 01, 2007

jSLP and Concierge

"jSLP is a pure Java implementation of SLP, the Service Location Protocol, as specified in RFC 2608. The API is derived from RFC 2614 with some modifications. The implementation runs on every Java2 VM, for instance, also on a J2ME CDC Profile. The footprint of less than 80 kBytes for the full version with SA, UA, and Daemon makes it very feasible for small and embedded devices."

"Concierge is an optimized OSGi R3 framework implementations with a file footprint of about 80 kBytes. This makes it ideal for mobile or embedded devices. Typically, these devices have VMs that are more focused on compactness and less optimized. For instance, purely interpreting VMs often kill the performance of existing OSGi framework implementations. The design of Concierge has been developed with respect to such platforms. Concierge uses resources in a very careful way and is able to provide significantly better performance in resource-constrained environments."

.. an interesting lightweight platform for small networked appliances .. projects from the "Information and Communication Systems Research Group" at the ETH in Switzerland ..

July 26, 2007

Running Hadoop MapReduce on Amazon EC2 and Amazon S3

"AWS and Hadoop developer Tom White illustrates how to use Hadoop and Amazon Web Services together using a large collection of web access logs."

.. a powerful combination .. and an excellent article .. by the way, an AMI is available including instructions for the installation on EC2

July 01, 2007

Enunciate

"Enunciate is a Web service deployment framework. It is not another Web service stack implementation. Rather, Enunciate leverages existing Web service technologies to provide a mechanism to build, package, deploy, and to clearly, accurately deliver your Web service API on the Java platform."

.. looks promising ..

June 25, 2007

Java Caching System

"The Apache Jakarta Project has released Java Caching System (JCS) 1.3, an open source "distributed caching system written in java. It is intended to speed up applications by providing a means to manage cached data of various dynamic natures. Like any caching system, JCS is most useful for high read, low put applications. Latency times drop sharply and bottlenecks move away from the database in an effectively cached system."

(Via Cafe au Lait Java News and Resources.)

December 10, 2006

Tutorial Terracotta DSO Slider

"This Tutorial shows how to create a plain and simple Swing application with Eclipse and then cluster it declaratively using Terracotta DSO Eclipse Plugin."

..what nicer way to start with Terracotta than with a pretty simple but powerful example .. enjoy ! ..

November 11, 2006

Grails

"Grails aims to bring the 'coding by convention' paradigm to Groovy . It's an open-source web application framework that leverages the Groovy language and complements Java Web development. You can use Grails as a standalone development environment that hides all configuration details or integrate your Java business logic. Grails aims to make development as simple as possible and hence should appeal to a wide range of developers not just those from the Java community."

.. pretty impressive "competitor" to Ruby On Rails! .. and it's all Java, easy deployable on any JavaEE server, like Tomcat .. I started by reading the excellent introduction by Harshad Oak ..

May 03, 2006

LDAP or a Database?

LDAP or a Database? Where to Store User Data: "Bilal Siddiqui's recent Apache Directory Server (ApacheDS) tutorial on IBM DeveloperWorks shows how to store and share Java objects via this new Apache product. ApacheDS uses MINA as a pluggable protocol layer, and has out-of-the-box LDAP support. But is LDAP always the right choice for storing shared application data, such as user accounts?"

(Via Artima Developer Spotlight.)

.. a very valid question ..

February 01, 2006

Prototype JavaScript Framework

Prototype JavaScript Framework: "Prototype is a JavaScript framework that aims to ease development of dynamic web applications. Featuring a unique, easy-to-use toolkit for class-driven development and the nicest Ajax library around, Prototype is quickly becoming the codebase of choice for web application developers everywhere."

.. interesting .. different people pointed me to that library .. always a good sign to start checkin into it ..

.. and by the way, Rico, another fancy Rich-Client-Library, is built on Prototype ..

January 20, 2006

Eclipse goes Server-side

Eclipse goes Server-side: "The Eclipse incubator Equinox has worked it out: it looks like with Eclipse 3.2 and it's underlying OSGi [1] services, you will be able to create plug-ins that deploy to a servlet container.

With this, you can package functionality, like code, but also servlets, JSPs and other http resources in Eclipse-style plug-ins for the server-side. You can deploy ("register") and un-deploy while the container WAR keeps running. The working demo shows this with Tomcat 5.5."

.. interesting .. an indication that big new things are coming .. a service platform for feature Eclipse? ..

January 08, 2006

Running Your Company on Java

A nice list of ERP-type of applications written in Java.

November 28, 2005

InMemoryDatabase

InMemoryDatabase: "An in-memory database (aka embedded database) is a database that runs entirely in main memory, without touching a disk. It's usually created when a process starts, runs embedded within that process, and is destroyed when the process finishes.

On first blush the idea of such a beast seems ridiculous. The two main purposes of most databases are to persist information between process invocations and to handle concurrent access to data between processes. In-memory databases do neither - so what's the point?"

..once again a good article from Martin Fowler, this time about In-Memory-Databases..

Verosee

"Verosee extends Skype to provide free workspaces that synchronize files and chats. This eradicates the inherent disorganization of trading email attachments and exchanging portable media. Verosee enables teams to have contextual awareness of each other's activities bringing convergence and continuity to the project life cycle. As a result, teams become more effective before, during, and after project meetings."

.. sounds very interesting .. can't install it right now, because of firewall issues :-( ..

October 08, 2005

Continuum

Continuum: "The Maven Project has posted the first beta of Continuum, a "continuous intergration server for building Java based projects". Continuum supports projects based on Ant, Maven 1, and Maven 2. It exposes web and XML_RPC interfaces, and provides e-mail notification of build failures."

(Via Cafe au Lait.)

..that sounds interesting..

October 01, 2005

IBM Cloudscape Workbench

"The Cloudscape Workbench is a tool for connecting to Derby and DB2 databases, and performing common tasks such as browsing schemas, altering database objects, and working with SQL scripts and table data."

.. interesting Eclipse Plugin for database development with the powerful open source database Apache Derby (Cloudscape) ..

September 10, 2005

WiredReach

"The WiredReach Platform allows users to selectively share content with others in a completely decentralized and secure manner. That means your content does not have to be uploaded to any central servers but rather can be shared right from your desktop or device. We use the term 'content' very loosely to include things like presence, blogs, bookmarks, documents, calendars, music, photos... virtually any type of social media."

.. an interesting use-case for Eclipse RCP ..

September 07, 2005

NetBeans catching up in Rich Clients

EclipseZone: "NetBeans catching up in Rich Clients"

.. still don't like the NetBeans-look and feel .. but it seems to offer most of the stuff people are asking for in one bundle/download ..

July 14, 2005

Design Principles

"Program to an interface, not an implementation", "Culture of shipping".. just two of many different topics discussed in a series of recent interviews with Erich Gamma, published by Artima.

..so in case you have some spare time..

June 16, 2005

Scripting Web services with E4X

Scripting Web services with E4X, Part 2: E4X, ECMAScript for XML, a simple extension to JavaScript that makes XML scripting very simple. In Part 1, we demonstrated a Web programming model called AJAX, Asynchronous JavaScript and XML, and showed how some new XML extensions to JavaScript can make it very simple. In this second article, we use E4X to build the server side of this interaction, and we show how to implement simple Web services in JavaScript.

June 13, 2005

Choosing a Java scripting language

This article describes some of the issues that come with supporting a scripting language in your Java application and compares Groovy, JudoScript, Pnuts, JRuby, Jacl, Jython, Rhino, and BeanShell in a variety of ways to help you make the right choice.

June 02, 2005

SWT custom widgets summary

SWT custom widgets summary:

There are a few SWT custom widgets available over there. Not as much as Swing, but the number is increasing as the number of developers that adopt SWT is growing. Here are some of them:

  • Novocode SWT controls: Includes a balloon toolip, hyperlinks, internal frames, and dragabble separators. Open source.
  • SWTworkbench controls: Data aware controls and a powerful virtual table that claims to be better than SWT's one. Open Source.
  • KPrint: Print layouts on SWT.
  • KTable: Powerful SWT table replacement.
  • SWTCalendar: Calendar widget. Free.
  • SWT Date Picker: Another calendar widget. Open Source.
  • SWT/AWT Layouts: Layouts based on Swing's ones.
  • Eclipse Colorer custom components: Including a custom table, calendar and splitter. Open Source.
  • SWTPlus components: Custom expandable groups and hyperlinks. Free but not Open Source.
  • Mathias Muller gives some more links:

  • SWTForms, jGoodies forms layout manager. Free, source available.
  • SWT Binding. Not just a custom component but a binding framework for jGoodies. It could be also helpful.

Not very sure if I have forgotten something. Please, let me know about it and I'll update the summary.

(Via Martin Perez's Weblog.)

May 06, 2005

Effective desktop applications

Effective desktop applications:

Some months ago I wrote an article in Spanish called Aplicaciones de escritorio eficientes, that could be translated as Effective Desktop Applications. I wrote this article because this is a very important topic forgotten by the common biliography. It's very easy to found information about EJB best practices, Servlet/JSP/JSF best practices, persistence best practices, web services bestpractices, interoperability best practices, but what about the desktop?

Even it seems that Sun is planning with Mustang some type of swing blueprints - correct me if I'm wrong, I think I have read this somewhere just today. That would be a great thing!

Well, in this article I talk about different best practices I found during my last +5 years of Swing programming and =2 years of SWT programming. I planned to translate it to English, but it's very very difficult to find some time to translate -my English isn't specially good, so I need a lot of time :-). But today I decided to post here the best practices summary. You can contribute and if people is interested, we could talk about some point in a different weblog entry.

So here we go:

  • 1 - Leverage UI frameworks. Take in count frameworks like jGoodies, Foxtrot, JNDC, or even rich client platforms like Spring RCP, Eclipse RCP or NetBeans Platform
  • 2 - Show your UI interface as fast as possible. If your applications starts in few seconds, then you have earned a point to success.
  • 3 - Use threads extensively. The key is asynchronous operation. The user shouldn't wait for long running tasks. Here SwingWorker or Foxtrot have a key rol.
  • 4 - Always show progress feedback to the user. Do you like when you push a button in a program and there is no messages, no status bar text, no progress bar, ... ?
  • 5 - Don't load information that it won't be needed. Lazy load all the information that won't be used.
  • 6 - Prefetch all the useful information as soon as possible. Eager load all the information that will be used. This load is related with item (3) as should be performed with background tasks.
  • 7 - Avoid to load huge amounts of data. Do you know any person able to digest a 10.000 rows table? Restrict queries. Show information in pages, or in structures easy understabke.
  • 8 - Minimize external resource access. The network doesn't come at zero cost. Every remote access has cost in terms of time and CPU compsumption.
  • 9 - Know your framework as you know yourself. Are you sure that your framework doesn't have any memory leaks? Do you know that with option XXX you can get a 50% performance boost? ...
  • 10 - Leverage operative system resources, if possible. If you don't have platform compatibility as a mandatory requisite, then probably you can leverage operating systems tools and resources, like embedding internet explorer in your UI, leveraging system tray, using JNI calls, etc.

I think that to work developing healthcare systems has helped me a lot to understand the great importancy of the items above. For example, when a cardiologist is doing some operation, and has to check some information on the patient clinical history, the last thing he want to do is waiting some minutes for that information to be downloaded. So in this job, you're encouraged to do very responsive UIs; to lazy and eager load data in a smartly way; to offer the possibility of offline working - imagine, that you're being operated, and suddenly the network adapter goes down, etc.

Well, do you have any other suggestion to this list? Do you like to talk about any special item?

(Via Martin Perez's Weblog.)

April 25, 2005

Migration: Eclipse RCP 3.1

Migration: Eclipse RCP 3.1:

This is part of the Eclipse 3.1 migration series that I have put up on my blog. The previous blog post on 3.1 migrations can be found at

Hope you have found those information useful.

In Eclipse 3.1, the WorkbenchAdvisor has been refactored to move out window-level responsibilities to a new window advisor - WorkbenchWindowAdvisor, and further division is the new ActionBarAdvisor to handle actionbar related functionalities. These changes lead to a cleaner and easier implementation.

(Via nice3z -.)

April 24, 2005

Building Cocoa-Java Apps with Eclipse

Building Cocoa-Java Apps with Eclipse: "Eclipse is a gloriously powerful, open source IDE, which is a joy to use when working with Java. It makes sense, then, when writing Java-based Cocoa apps, to use Eclipse. But how? What does Eclipse know about the esoteric world of Cocoa-Java? Well, with a little help from Ant, the flexible build system, you can tell it everything it needs to know. Mike Butler shows you how."

(Via O'Reilly MacDevCenter.com.)

April 23, 2005

jLibrary, your desktop CMS (1.0 beta2 released)

jLibrary, your desktop CMS (1.0 beta2 released):

Yes, finally jLibrary 1.0 beta2 has been released. jLibrary is a new kind of CMS tool. Based on Eclipse Rich Client Platform, jLibrary is a rich client application that allows you to work with your documents, and media, in a very easy way, allowing categorization, export/import operations, cut/copy/paste, drag&drop, favorites, security constraints, etc. etc. etc.

-martin

(Via Martin Perez's Weblog.)

April 12, 2005

RSDP: A Really Simple Proposal

RSDP: A Really Simple Proposal by Brian McConnell -- Anybody who has written software knows that communicating with databases is a nettlesome task because of difficulties with installing and configuring them. Brian McConnell proposes a Really Simple Database Protocol (RSDP) that would provide developers with a way to prototype and build database-driven applications that are more independent of back-end systems. Weigh in with your thoughts on his proposal via the Talkback section at the end of the article.

March 25, 2005

On the Death of SOAP

On the Death of SOAP: "

Link: On the Death of SOAP.

I just put up a post at Between the Lines on the death of SOAP.

The challenge for the RESTful crowd is to create a well-thought out transport alternative to SOAP. HTTP is the basis for that transport, but it's not enough. The place to start is with service description and data binding so that RESTful Web services can enjoy the same kind of discovery that possible with SOAP. Paul Prescod made a start with his WRDL proposal, but it hasn't really taken off.

From » On the death of SOAP | Between the Lines
Referenced Fri Mar 25 2005 09:32:37 GMT-0700 (MST)

"

(Via Venture Chronicles by Jeff Nolan.)

March 10, 2005

Migrating from Eclipse 3.0 to Sun Java Studio Enterprise 7 (pdf)

Migrating from Eclipse 3.0 to Sun Java Studio Enterprise 7 (pdf): "Use this guide to quickly and easily migrate from Eclipse to Sun Java Studio Enterprise."

(Via java.sun.com.)

.. that is just ridiculous .. a 58! page document describing a migration no one outside of Sun would ever plan to do.. -- Marcel

March 03, 2005

The coolest plug-in you’re not using

The coolest plug-in you’re not using: "Today I saw a demo of something called Mylar, which is a system for making large scale development much more manageable. It works by filtering all the normal Eclipse views to show only things that are interesting while working on a problem. For the most part you can work without having to scroll any views [...]"

(Via eclipsepowered.)

March 02, 2005

Day 3: Packaging, Deploying and Running Rich Client Apps

Day 3: Packaging, Deploying and Running Rich Client Apps: "Thanks to everyone who came to my talk this morning. The final slides and examples now available. Slides: http://www.eclipsepowered.org/files/presentations/EclipseCon2005 Examples: http://www.eclipsepowered.org/files/presentations/EclipseCon2005_6.2.zip"

(Via eclipsepowered.)

March 01, 2005

Major news: Yahoo Has an API...

Major news: Yahoo Has an API...: "Major news: Yahoo Has an API. Coool!"

(Via Scripting News.)

February 28, 2005

Eclipse RCP Slides at EclipseCon 2005

Eclipse RCP Slides at EclipseCon 2005: "EclipseCon 2005 will be without any doubt the Eclipse event of the year, and also one of the most important Java events this year. But the greatest thing is that those of us that cannot be there, there is some slides available.

You can check the full program in the main event page. In the Eclipse RCP section, there are several very interesting slides:

  • End-to-end Rich Client Platform Solutions, by David Orme (download)
  • Developing for the Rich Client Platform, by Nick Edgard and Pascal Rapicault (download)
  • Developing Eclipse Rich-Client Applications, by Frank Gerhardt, Christian Wege (download)
  • Creating, Packaging, Testing and Deploying Features in Eclipse 3.0, by Pat McCarthy, Sandy Minocha (download)
  • Workbench and JFace Foundations, by Tod Creasey, Michael Van Meekeren (download)
  • Introduction to SWT, by Grant Gayed, Carolyn MacLeod (download)
All are very interesting, but I must say that Nick Edgard and Pascal Rapicault's one is really, really great!"

(Via Martin Perez's Weblog.)

February 17, 2005

DocJar

DocJar: "DocJar is a free plugin. It allows users to access over a thousand open source Java API document and source code on http://www.docjar.com. Users can also search Google with this plugin."

(Via EclipsePlugins: new and updated plugins.)

RCP Installer

RCP Installer: "I've created an example RCP Installer using NSIS and the RCP Mail example from the most recent 3.1 Integration build. Give it a try, see if it installs ok on your Windows box, and give me your feedback. This will be one of the examples used in my EclipseCon2005 presentation. ..."

(Via eclipsepowered.)

February 14, 2005

Nomad PIM

Nomad PIM: "Nomad PIM is an Eclipse rich client platform based personal information manager (PIM). Currently, there are modules for notes, diary, money management, and contacts, in addition to a basic workarea where a text can be written. All data is automatically saved and internally available in an 'object space'. The intention is to make all 'space objects' available to other plugins, so extensions of modules themselves will be easy, too. The personal data is stored in several (unicode) xml files and can be used in all supported operation systems, so it will be easy to work with the same data in Linux and Windows, for example. This is important if multiple operation systems are installed on one pc and the user often switches between them."

(Via EclipsePlugins: new and updated plugins.)

February 03, 2005

jDBI 1.2.3

jDBI 1.2.3: "

Just pushed jDBI 1.2.3. Much thanks to Patrick and Robert for prodding me make a couple big changes, and for prodding me to not make those changes until I found the right way, respectively (for 1.2.2 (transparently handling different transactional contexts) and 1.2.3).

The biggest change is making externalized SQL pluggable. It was something that had been itching for a while (previously it could only pulled named statements from the classpath, though pretty smartly), and Patrick's need for sticking the SQL in the database prodded me to finally support that explicitely. He's not using it, I don't think, but you'd better bet I will before too long =) Maybe stick them in a JNDI or an LDAP instead, or whatever. It's all good.

Speaking of the classpath approach, what I did on the last new thing I used jdbi for was to take advantage of Java's nice resource loading and bundle all the sql into its own jar, under an sql/ directory, so you'd have:

sql/
    find-foo-by-id.sql
    find-foo-by-name.sql
    
...

Map foo = handle.first('sql/find-foo-by-id', Args.with('id', new Long(fooId)));
Map same_foo = handle.first('sql/find-foo-by-name', foo); // gets 'name' from map

The hack here is that the named statement is fetched correctly, and if you unzip the sql.jar to tweak the sql, it's in its own dir, not the working dir. This is minor, but I have things that untar (zip|jar) into the working directory =)

Anyway, the release is up on Codehaus. Have fun!

"

(Via Waste of Time.)

February 02, 2005

Eclipse RCP installer tools

Eclipse RCP installer tools: "A good thread about installers on RCP applications has been started at Eclipse RCP newsgroup.

In addition to known products like NSIS, izpack or BitRock InstallBuilder, the one which called my attention was XtremeJ RCP Builder

XtremeJ RCP Builder, based on SIS, it's integrated on your Eclipse environment as a plugin, and it seems that automatizes very well the installer creation task. There is a free edition available as an Eclipse feature. These are the steps:

1. Select the menu 'Help > Software Updates > Find and Install'.
2. Choose 'Search for new features to install'
3. Click 'New Remote Site', and enter the XtremeJ update site URL 'http://www.xtremej.com/updates/'
4. Select the 'XtremeJ RCP Builder Feature' and proceed to finish the installation.

And here is the User's guide.

It seems interesting."

(Via Martin Perez's Weblog.)

February 01, 2005

Creating EJB clients using the Eclipse Rich Client Platform

This article shows how to build a sample EJB client using the Eclipse Rich Client Platform (RCP), which has become increasingly popularity due to its extensible nature. Besides focusing on how to use IBM® Rational® Application Developer to build an RCP application, this article also details how to configure an Eclipse RCP application to act as a J2EE application client.

JavaRanch

JavaRanch .. a friendly place for Java greenhorns .. :-)

January 01, 2005

Jakarta Slide 2.1 (FINAL) Released

The Jakarta Slide community is pleased to announce the release of Slide 2.1. This is a combined bug fix and feature release. Feedback is greatly appreciated, especially in the form of bug reports.

You can download Slide 2.1 from:
http://jakarta.apache.org/slide/download.html

Release notes are at:
http://cvs.apache.org/viewcvs.cgi/jakarta-slide/RELEASE-NOTES-2.1?rev=1.1.2.1

The Slide project page is:
http://jakarta.apache.org/slide

----

-- The Jakarta Slide Community

[Apache News Blog Online]

December 21, 2004

Learning Management Systems

A list of Open Source Learning Management Systems (LMS) Written in Java
[stuff]

December 08, 2004

prefuse

prefuse is a user interface toolkit for building highly interactive visualizations of structured and unstructured data. Using this toolkit, developers can create responsive, animated graphical interfaces for visualizing, exploring, and manipulating these various forms of data. prefuse is written in the Java programming language using the Java2D graphics library and is designed to integrate with any application written using the Java Swing user interface library.

December 03, 2004

Tools for Development of Mobile Applications

A huge list of different tools and environments for development of mobile applications.

November 13, 2004

Using Ant To Build Blackberry Projects

Enrique Ortiz of J2MEDeveloper.com wrote an excellent article that shows how you can use Ant (a Java based build tool) to build your J2ME applications for the Blackberry platform (and simultaneously frees you from having to use the Blackberry JDE... [Blackberry Blog]

Antenna

Antenna provides a set of Ant tasks suitable for developing wireless Java applications targeted at the Mobile Information Device Profile (MIDP). With Antenna, you can compile, preverify, package, obfuscate, and run your MIDP applications (aka MIDlets), manipulate Java Application Descriptor (JAD) files, as well as convert JAR files to PRC files designed to run on the MIDP for PalmOS implementations from Sun and IBM. Deployment is supported via a deployment task and a corresponding HTTP servlet for Over-the-Air (OTA) provisioning. A small preprocessor allows to generate different variants of a MIDlet from a single source.

November 01, 2004

Open Source Document Repository Solutions Written

A list of Open Source Document Repository Solutions written in Java. [stuff]

October 06, 2004

Open Laszlo

Laszlo is an open source platform for the development and delivery of rich Internet applications on the World Wide Web.

Jive Messenger is now Open Source

Jive Messenger is a Java based server for comprehensive group chat and instant messaging (IM), which is based on the open IETF standard XMPP protocol. Jive Software is licensing Jive Messenger under the GPL Open Source license.

September 29, 2004

Sphinx-4, an open source speech recognition engine written in Java.

Carnegie-Mellon University has posted the first beta of Sphinx-4, an open source speech recognition engine written in pure Java.
[Cafe au Lait Java News and Resources]

September 28, 2004

Indexing Object Graphs with Lucene

When I posted on Lucene and OJB, Erik Hatcher commented:

... at first glance it doesn't look like you're doing hierarchical indexing. How are you handling that type of thing, if I've missed it?

And he is right, I wasn't there -- it was simply flat indexing. Never one to turn down a fun sounding problem (I am weak that way) I spent Sunday afternoon (while Joy was out looking for wedding stuff -- not enough time to hack when planning a wedding, when does the "Yes dear, that sounds good" phase kick in?) tossing together a tool do build indexes on arbitrary object graphs in a useful way. Had some success too! Here's a source xref of the results, with some junit code showing how to use it

The code basically builds an index on the graph allowing queries of the form beer.name: Schlitz to look for instances of beer with the name field being Schlitz. A more fun one would be cooler.beer.name: Shitz~ AND cooler.location: My House would hit on the documents indexing org.skife.lucene.graph.helper.Cooler which contain beer whose name is like "Shitz~" (ie, Schlitz) and whose location is "My House".

Setting it up is pretty easy to do:

    public void setUp() throws Exception {
        final SimpleNameMapper mapper = new SimpleNameMapper();

        indexer = new GraphIndexer(new MetadataFactory() {
            public Field[] build(final Object entity) {
                final Field name = Field.Text("name", mapper.build(entity));
                return new Field[]{name};
            }
        });
    }    

    public void testFuzzy() throws Exception {
        final Cooler cooler = new Cooler(1);
        cooler.stock(new Beer(2, "Schlitz"));
        cooler.stock(new Beer(3, "Caffreys"));
        cooler.stock(new Beer(4, "McEwan's"));
        final File index = indexer.index(cooler);
        final IndexReader reader = IndexReader.open(index);
        final IndexSearcher searcher = new IndexSearcher(reader);

        final Query query = parser.parse("cooler.beer.name: Schitz~");
        final Hits hits = searcher.search(query);

        assertEquals(1, hits.length());
    }

The GraphIndexer builds an index (or can add to an existing) via the final File index = indexer.index(cooler); call, returning the directory (on filesystem) where the index is stored. The above index will create the fields:

Field: cooler.beer.name
Field: beers
Field: cooler.beer.identity
Field: beer.name
Field: identity
Field: cooler.identity
Field: beer.identity
Field: cooler.beer
Field: name
Field: cooler.beers

And populate the correct fields onto the correct documents. You can query against the index on simple property names (name, identity, etc) or specify types (beer.name, cooler.identity) etc. This allows all the following to be useful (? ;-) queries:

cooler.identity: 7
cooler.beer.name: mcewans
name: schlitz
cozy.beer.name: Bob OR cozy.owner: Bob
identity: 1 OR 2 OR 3
beer.identity: 1 OR 2 OR 3
beer.name: Coors OR cooler.beer.name: Schlitz
beer
cooler

Also notice the MetadataFactory passed to the GraphIndexer. This is just a convenient way to add additional fields on a per instance basis. I use it here to add name field to every indexed instance where the value is the simple mapped class name (drop package and downcase). I also use the name field as the default search field, so you can do nice searches like beer quality: good and get back hits for all instances of good beer. In a real application I would add the information required to query for the entity, such as the class name and pk value (using OJB probably just the stringified Identity for the instance, as I can extract all of that from the identity =)

Right now it has a couple quirks. Being a sunday afternoon hack (and Joy getting back from looking for wedding stuff) there is one case which is not handled, which is downstream mapping from a cycle in the graph. This is a *very* small case though, and won't be difficult to add when I get a chance. The second gotcha is that if you have a really big interconnected graph (say several gigabytes) it will be interesting to index because as it is right now it needs to keep the full graph in memory while it indexes. I don't think this will be gotten around without implementing some kind of relationship-only caching, which will be almost as memory intensive as the whole graph -- at least in the same order of magnitude if with a smaller constant. The workaround is to index aggregates recognizing that between aggregates property chaining will be slightly off. For graphs which are fairly hierarchical (you can keep all cycles in the same agrgegate being indexed at once) this will all properly index.

Most of the behavior is configurable, from the manner in which it traverses the graph, to how it names root classes, to how it stringifies things, to filtering out instances. The defaults should be pretty reasonable (go read what they do) for most cases and playing around though.

Lastly, it has a couple dependencies. The first I am happy about, it uses the grafolia library I wrote for object graph manipulation for OJB 1.1. I pulled it out from OJB because I realized it was the type of code I had implemented many times before (arbitrary object graph traversal type stuff). Glad to see it fit naturally here. The other dependency is commons-beanutils because it is just so much more convenient than using java.beans. BeanUtils drags commons-logging along with it. Sorry.

Tarball is available if anyone wants to play. It is a pretty basic little maven project right now (javadocs, xrefs, etc posted), so should be easy to build. Remember, maven idea and maven eclipse are your friends ;-)

[Waste of Time]

September 14, 2004

ASM

ASM is a Java bytecode manipulation framework. It can be used to dynamically generate stub classes or other proxy classes, directly in binary form, or to dynamically modify classes at load time, i.e., just before they are loaded into the Java Virtual Machine.

July 02, 2004

EclipseME

EclipseME provides an Eclipse plugin to help develop J2ME code. With the help of a J2ME Wireless Toolkit, users may develop MIDP midlets within the Eclipse development environment.

July 01, 2004

OCE

The Open Construct Engine (OCE) is a suite of frameworks, applications and utilities for the development of content management solutions, based around Java and Apple's WebObjects application server platform.

WOLips

WOLips is a plugin for Eclipse IDE that support development of WebObjects applications and frameworks.

June 10, 2004

Rome 0.1 (alpha)

Rome is a set of Atom/RSS Java utilities that make it easy to work in Java with most syndication formats.

Today it accepts all flavors of RSS (0.90, 0.91, 0.92, 0.93, 0.94, 1.0 and 2.0) and Atom 0.3 feeds.

Rome includes a set of parsers and generators for the various flavors of feeds, as well as converters to convert from one format to another. The parsers can give you back Java objects that are either specific for the format you want to work with, or a generic normalized SyndFeed object that lets you work on with the data without bothering about the underlying format.

Rome is called like this because all feeds lead to Rome.

May 25, 2004

HTML parser

Derrick Oswald has released the HTML parser 1.4.1, a free (LGPL) class library for parsing "real-world HTML."
[Cafe au Lait Java News and Resources]

May 06, 2004

Jakarta Slide 2.0 FINAL Released

Jakarta Slide Team is very pleased to announce that Jakarta Slide 2.0 FINAL Release has arrived. Jakarta Slide 2.0 is a content repository and rudimentary content management system. You can download it at: http://jakarta.apache.org/slide/download.html
[Apache News Blog Online]

March 27, 2004

JWAA

JWAAis a small but powerful architecture for building web-based applications in Java, XML and Velocity.

March 26, 2004

SysTray for Java

A library that allows Java application to hook into the Windows system tray.

March 21, 2004

Proxy Servers

A list of Open Source Personal Proxy Servers written in Java.

March 12, 2004

Caffeine

The Olympum Group has posted the Caffeine.NET 0.1, a free "interoperability solution between the Java platform and the .NET framework, with special emphasis to the enterprise variants of such platforms."
Caffeine transfers APIs between .NET and Java
and can run code written for one platform on the other platform .
Caffeine is based on Mono. [Cafe au Lait Java News and Resources]

March 02, 2004

A short review of ICE (Internet Communications Engine)

The Internet Communications Engine (Ice) is a modern alternative to object middleware such as CORBA or COM/DCOM/COM+. Ice intends to be easier to learn, yet should provide a powerful network infrastructure for demanding technical applications. Ice claims to be very efficient and scalable.

ICE is currently available for C++, Java and PHP. Ice for C# is in the works and expected to be available soon.

Ice boasts an impressive array of features, including:

  • An object-oriented specification language.
  • Highly efficient protocol, including protocol compression.
  • Asynchronous method invocation and asynchronous method dispatch.
  • Dynamic transport plug-ins.
  • TCP/IP and UDP/IP support.
  • SSL-based security.
  • An Ice firewall solution.
  • Automatic persistence using XML, including support for versioning.
  • A typed messaging service with support for federation.
  • A software patching and updating service.
  • Sophisticated deployment tools.
  • Extensive documentation.

First of all the documentation is really excellent. It comes with full examples for Java and C++. Actually with more than 300 pages it's more like a full book.

If you are "only" interested, what went wrong with Corba I recommend you to read the IEEE article.

ICE shares a lot with Corba, and if you have developed Corba applications, you will have no problems with ICE. ICE uses an object-oriented specification language called "Slice", to specify Remote Interfaces. Slice is very similar to the CORBA IDL specification language, but simpler and has some new interesting features. So if you expected some AOP fluff, ICE is not yet for you ;)

The most interesting design decisions over CORBA are:
  • replace IIOP by a more simple and efficient protocol, with optional compression
  • Ice is inherently multithreaded
  • direct support for dictonaries
  • Simple mapping for C++ based on STL
  • Batched Invocation
  • Simple error recovery
  • support protocol plugins
  • Built-in security and the ability to coexist with firewalls and NAT
  • strong object identity
  • Versioning Support for interfaces

From my own experience with Corba within the last 7 years, I can tell you that these are really the main issues, when trying to develop Corba applications.

So what about performance ? Here's an one year old thread about performance. It basically shows that ICE for C++ should be at least as fast as a full blown Corba orb.

I did some quick tests with the Java implementation and also the latency was quite good (around 0.5 ms), JacOrb an opensource Java Corba implementation, was twice as fast (for pings). This might be due to JacOrb using a different threading model (single threading ?) than ICE, which always uses a thread pool.

In summary I would recommend anyone, who needs to build a high performance distributed application to have a look at ICE. It's much simpler to develop with than Corba, and it should be at least as efficient.

[Codito ergo sum]

February 18, 2004

IBM's alphaWorks has posted the Abstract User Interface Markup Language (AUIML) Toolkit.

IBM's alphaWorks has posted the Abstract User Interface Markup Language (AUIML) Toolkit.

January 30, 2004

State Machines

A list of open source state machines for user interfaces written in Java.

Apache Lenya

Apache Lenya is a Java-based Open-Source Content Management System. It is based on open standards such as XML and XSLT. One of its core components is Cocoon from the Apache Software Foundation.

January 22, 2004

telnetd

telnetd is an Open Source effort to implement a Java telnet daemon that is compact and generic and thus easily embeddable into other applications.

January 15, 2004

Blitz JavaSpaces

Dan Creswell has released Blitz JavaSpaces 1.1.3,
an open source (BSD license) implementation of JavaSpaces
that is Jini 2.0 enabled. It implements smart indexing, tuneable persistence, and active/passive lease cleanup.

January 08, 2004

Web Crawler

Heritrix an open source implementation of a web spider written in Java.
A list of other crawlers implemented in Java.

Java Articles 2003

All O'Reilly articles regarding Java.

December 17, 2003

Open Source Profilers for Java

A list of open source profilers for Java.

November 18, 2003

XWT

XWT is the XML Windowing Toolkit. It lets you write remote applications -- applications that run on a server, yet can "project" their user interface onto any computer, anywhere on the Internet.

November 17, 2003

IKVM.NET

The goal of IKVM.NET is to be able to run any Java existing application and to allow for as much interoperability between .NET and Java code as is possible.

Java Rule Engine API

BEA Systems, Inc. has posted the proposed final draft of Java Specification Request 94, a Java Rule Engine API, in the Java Community Process. This API describes how applications load and use rule engines. It does not define a standard rule description language. The zip file for the proposed final draft includes a reference implementation.
[Cafe au Lait Java News and Resources]

November 13, 2003

SwingWT

R. Rawson-Tetley has posted an alpha of SwingWT,
an open source, "100% pure Java library which very closely resembles the interface of Swing. The difference is that instead of using the Swing library, it drives native peer widgets from SWT" (the Eclipse GUI toolkit).
[Cafe au Lait Java News and Resources]

November 11, 2003

Open Source Distributed Cache Solutions

Open Source Distributed Cache Solutions Written in Java.

November 09, 2003

XPP

Xml Pull Parser (in short XPP) is a streaming pull XML parser and should be used when there is a need to process quickly and efficiently all input elements (for example in SOAP processors).

Full Text Search Engines

Open Source Full Text Search Engines Written In Java [stuff]

November 04, 2003

Story of Jython

Nice foreword by Jim Hugunin about Jython.

October 10, 2003

Open Source Portal Servers Written in Java

A list of "open source" portal servers written in Java. [stuff]

October 01, 2003

Workflow Engines in Java

A list of Open Source Workflow Engines that are written in Java.

September 26, 2003

Java to Windows executable

GCC which can compile Java code into a native Windows executable!

JMangler

JMangler is a framework for generic interception and transformation of Java programs at load-time.

September 25, 2003

Prevayler

"Prevalence is by far the fastest, simplest and most transparent business object persistence, ACID transaction, fault-tolerance, replication and load-balancing architecture we know."

ShiftOne Java Object Cache

JOCache is a Java library that implements strict object caching.
It's strict in that each cache enforces two limits in a very strict and predictable way.

- Max Size - each cache has a hard limit on the number of elements it will contain. When this limit is exceeded, the least valuable element is evicted.

- Element Timeout - each cache has a maximum time that it's elements are considered valid. No element will be returned that exceeds this time limit.

September 24, 2003

Rule Engines Written In Java

A list of open source Rule Engines that are written in Java.

Alicebot Installation

Alicebot installation manual.

Berkeley DB XML Getting Started Guide for Java

Berkeley DB XML Getting Started Guide for Java is now available as pdf file.

September 22, 2003

JGAP

JGAP 1.0 has been released. JGAP is an LGPL'd genetic algorithms library for Java that "is designed to require minimum effort to use "out of the box", but is highly modular and allows custom components to be easily plugged in by the more adventurous." It supports XML persistence, an event system, and a default natural selection algorithm.

September 21, 2003

Refactoring for everyone

How and why to use Eclipse's automated refactoring features.

September 15, 2003

Java Service Wrapper

Tanuki Software has released Java Service Wrapper 3.0.5, an open source tool that enables Java applications to be installed and controlled like native NT or Unix services. It can even automatically restart crashed or frozen JVMs. Version 3.0.5 adds support for SGI Irix and fixes a problem with Mac OS X.

September 04, 2003

BeanShell 2.0

Pat Niemeyer has posted the first beta of BeanShell 2.0,
an open source Java source code (as opposed to byte code).
BeanShell extends Java with loose types, method closures,
commands, and other scripting language features.

August 13, 2003

JAR Class Finder

JAR Class Finder is a WSAD/Eclipse plug-in utility for finding JAR files containing a given class for the Java build path of a project and for helping to fix NoClassDefFound exceptions.

July 27, 2003

SMYLE Lightweight Persistence with Heavyweight Features

Rickard Oberg mentions JDBM as a replacement for JISP for lightweight high performance storage management. This jogged my memory a bit, and I think not many have mentioned SMYLE.

SMYLE is has a bunch of extremely interesting features for a lightweight storage manager. What struck me were the following "self-optimizing indexes", "multidimensional indexes", "journalling" and "schema evolution". He's got a benchmark against MySQL that shows it being 10x faster. No surprise considering you don't have network roundtrips.

July 16, 2003

ObJectRelationalBridge

ObJectRelationalBridge (OJB) is an Object/Relational mapping tool that allows transparent persistence for Java Objects against relational databases.

July 03, 2003

The Java Gui Builder

The Java Gui Builder program is designed to decouple the GUI building code from the rest of the application code, without hand-writing code. It allows one to describe the layout of windows and controls using an XML file. A full DTD was written to allow on-the-fly validation.

June 27, 2003

iText

iText 1.0, an open source Java library for creating documents in PDF, XML, HTML, and RTF. It can also convert XML documents into any of these formats.

June 26, 2003

Multiface Coding in J2EE

JavaPro magazine has published a quite illuminating article "Separate Business Logic From Components". It's an article written by two veterans at ATG. ATG or Art Technology Group was one of the first developers of an application server, as a matter of fact, they donated their template language to Sun. That formed the basis of what we know today as JSP. In short, when someone from ATG speaks, I listen attentively!

The article describes an approach which they've coined as "Multiface Coding". It was designed to tackle the notorious complexity of developing using J2EE. They've chosen a code generation approach. I however find it interesting to analyze their approach from the perspective of component models and aspect oriented programming (AOP).

The authors tackle the problem of developing reusable business logic. They do this but writing the business logic in Java and then providing an XML description. The XML description is describes the inputs, outputs and "implicit" inputs of the method of a class.

It's interesting to study what they mean by "implicit" inputs. In essence they are objects are part of the execution context of the business method. For example, they could be database connections, these are looked up using JNDI or they could be services provided by the container.

The authors have essentially created a component model for their business methods. If you read my earlier blog "What's a Component Anyway?" you'll see that they've satisfied two of the five characterstics I've mentioned.

However, what's quite interesting is that they are employing this approach because of the realization that business methods crosscut across implementation. However, these business methods aren't aspects, they're the base objects. So, all you got to do is flip the axis and you'll realize that the code generator they describe is like an aspect weaver, it essentially wraps up business methods inside a J2EE implementation. Very similar to what ACE or JGenerator does.

So in summary, for any large scale J2EE development effort, componentize your business objects and build and weave in J2EE aspects.

[::Manageability::]

June 24, 2003

AspectWerkz

AspectWerkz is a dynamic, lightweight and high-performant AOP/AOSD framework for Java.AspectWerkz utilizes runtime bytecode modification to weave your classes at runtime. It hooks in and weaves classes loaded by any class loader except the bootstrap class loader. It has a rich join point model. Aspects, advices and introductions are written in plain Java and your target classes can be regular POJOs. You have the possibility to add, remove and re-structure advices as well as swapping the implementation of your introductions at runtime. Your aspects can be defined using either an XML definition file or using Runtime Attributes.

June 17, 2003

EJB's 101 Damnations

This is the tale of 101 Damnations. Sadly, it's no Disney story - in fact it's more likely to have been pulled from the pages of the Brothers Grimm.

June 06, 2003

Proliferation of Java Microkernels and Extinction of J2EE Containers

JBoss was possibly the first to introduce a non-monolithic J2EE implementation. The implementation was developed on top of JMX based infrastructure and dubbed a Microkernel architecture. The clear advantage of such an approach was to allow best of bread solutions to be plugged in. The JMX based microkernel design for J2EE was later copied by HP and Macromedia.

The JMX microkernel approach was also leveraged by Apache's Avalon project to build more generic servers (i.e. email, directory, web, jabber etc.). The Compiere project a ERP-CRM application also chose to implement its services in terms of JMX managed services.

The Eclipse IDE also chose a microkernel design to manage the various plugins that can be dynamically added to its workbench. Realizing the potential of such a design, Eclipse has embarked in a project called Equinox to explore this even further.

Howard Ship the developer of Tapestry, a Web Application framework who's claim to fame is its highly componentized nature, is embarking in a new project HiveMind. He's studied the JBoss and Eclipse approaches and believes he can do even better!Meanwhile, Sapient the Web Consulting company has relased its own open source version of a microkernel framework named Carbon. Another group, spinning off from JCorporate, is introducing a "meta-framework" named Keel leveraging the Avalon microkernel. In short we are seeing the emergence and thriving of a new species of software construct.

Also, in an earlier piece about Aspects vs. Components, I forgot to mention that an Aspect based approach to building Containers is analagous to building a modular as opposed to a monolithic Container.

This leads me to another fearless forecast. The combination of Aspect Oriented Programming and Microkernel Architectures will lead to the extinction of the current monolithic J2EE containers that we've known and loved (or despised?) so well.

If you didn't quite grok what I just said, then try visualizing the passing away of dim-witted lumbering dinosaurs with adaptive, nimble mammals emerging in the background. Hope you get the picture.

[::Manageability::]

June 02, 2003

JPower

JPower is a free JavaSpaces implementation.

May 27, 2003

JFace and SWT

Using JFace and SWT in stand-alone mode.

May 25, 2003

Xang

Xang lets you quickly build data-driven, cross-platform Web applications that integrate disparate data sources. The Xang architecture cleanly separates data, logic and presentation. It is based on open industry standards such as HTTP, XML, XSL, DOM and ECMAScript (JavaScript).

May 22, 2003

JFluid

JFluid a profiling tool for the Java programming language that allows you to profile an arbitrary subset of your program, that can be changed on-the-fly, while the program is running.

joeq

joeq is a Java 2 (JDK 1.3/1.4) compatible virtual machine. joeq is unique in that it is entirely implemented in JavaTM, leading to greater reliability, portability, maintainability, and efficiency. It is also language-independent, so code from any supported language can be seamlessly compiled, linked, and executed --- all dynamically!

SWTSwing

SWTSwing, port of SWT to Swing.. a Java-only approach.. let's see wher it ends.

May 20, 2003

wx4j

wx4j is a Java binding for wxWindows providing a Java GUI toolkit using native widgets.

May 19, 2003

ITracker

ITracker is a Java J2EE issue tracking system designed to support multiple projects with independent user bases. It supports features such as multiple versions and project components, detailed histories, per project user permissions and multiple email notifications.

May 12, 2003

Fitness

The newest piece of the puzzle is Fitnesse . Fitnesse is a small application that allows you to host Wikis and sub-wikis that contain acceptance tests that can be easily run remotely. Fitnesse requires Java 1.4 because it uses some of the regular expression library for parsing. It is easy to set up and run. Thanks to "Uncle Bob" Martin and friends for Fitnesse.

May 02, 2003

Jaim

Jaim is a Java libray that implements the AOL Toc protocol.

April 15, 2003

Spaces

Spaces shares many features with standard email/PIM software like Evolution or Outlook and provides other features, such as a built-in news aggregator (RSS reader), a personal webserver (to read your emails while away from your machine) and more.

HotSheet

HotSheet s a program that retrieves news headlines from multiple websites, displays them, and allows you to interact with them, RSS Reader written in Java.

April 11, 2003

Sync4J

Sync4J: Java library that supports SyncML protocol.

April 01, 2003

LiteWebServer

LiteWebServer, a modular Web server and Java servlet container based on Tomcat 4.1.24, but "tweaked and extended for easier installation and management."

March 28, 2003

Slide

Slide: A WebDAV client and server-extension for Tomcat.

March 12, 2003

Commons FileUpload

The Commons FileUpload package makes it easy to add robust, high-performance, file upload capability to your servlets and web applications.

March 06, 2003

Java Service Wrapper

Java Service Wrapper makes it possible to install a Java Application as a Windows NT Service. The scripts provided with the Wrapper also make it very easy to install those same Java Applications as daemon processes on UNIX systems.

February 19, 2003

CodeBeamer

CodeBeamer provides Eclipse with team collaboration features such as Task and Bug management inside the eclipse platform.

JBoss-IDE

JBoss-IDE is a new project with the aim to provide a world class IDE for JBoss.

February 18, 2003

Strangeberry

From the where-are-they-now department, original Java team members and Marimba founders Arthur van Hoff and Jonathan Payne have launched a new start-up named Strangeberry, which appears to be working on Zero Configuration Networking, a semi-competitor to Sun's JIN.

February 17, 2003

OpenEJB

Doc (pdf) describes installing OpenEJB and Tomcat.

February 13, 2003

jCIFS

Michael B. Allen's posted jCIFS 0.7.3, an SMB client library written in pure Java. It supports Unicode, named pipes, batching, multiplexing I/O of threaded callers, encrypted authentication, full transactions, domain/workgroup/host/share/file enumeration, NetBIOS sockets and name services, the smb:// URL protocol handler, RAP calls, and more. The API is similar to java.io.File. This is a bug fix release. jCIFS is published under the LGPL.

February 12, 2003

MIDP 1.0.3 for OSX

This is a Darwin/OSX port of the Mobile Information Device Profile (MIDP) Reference Implementation v1.0.3, released under the terms of the Sun Community Source License for Research Use.

MIDP 1.0.3 for OSX

This is a Darwin/OSX port of the Mobile Information Device Profile (MIDP) Reference Implementation v1.0.3, released under the terms of the Sun Community Source License for Research Use.

February 04, 2003

J2SSH

J2SSH is an object-orientated Java implementation of the SSH2 protocol.

January 12, 2003

MG4J

(Managing Gigabytes for Java) is a collaborative ongoing effort aimed at providing a free Java implementation of the inverted-index compression techniques described in the book by Managing Gigabytes by Ian H. Witten, Alistair Moffat and Timothy C. Bell.

December 23, 2002

Eclipse Wiki

Eclipse Wiki enthaelt viel Information zu PlugIns aber auch SWT

Eclipse-Plugins

Eclipse-Plugins beitet eine gute Uebersucht ueber Eclipse-Erweiterungen.

December 21, 2002

EclipseProject

EclipseProject, eine deutsche Seite zu allerhand interessanten Eclipse-News.

December 13, 2002

jMechanic

jMechanic is an Eclipse Java IDE plugin providing Java Profiling tools. Tools such as CPU Sampling and Heap Summary allow the Java developer to tune up the performance of their Java programs all within the comfort of the Eclipse IDE.

November 27, 2002

Jakarta Commons/Net

Net: This is an Internet protocol suite Java library originally developed by ORO, Inc. This version supports Finger, Whois, TFTP, Telnet, POP3, FTP, NNTP, SMTP, and some miscellaneous protocols like Time and Echo as well as BSD R command support.

November 12, 2002

Jabber Library

JSO: Jabber Stream Objects, a low-level support for protocol elements, as well as a "primitive" stream connection interface.

November 11, 2002

Processing XML with Java

Online Version von Processing XML with Java.

October 30, 2002

EJBCA

EJBCA is a fully functional Certificate Authority. Based on J2EE technology it constitutes a robust, high performance and component based CA. Both flexible and platform independent, EJBCA can be used standalone or integrated in any J2EE application.

October 29, 2002

MX4J

MX4J is an initiative to build an Open Source implementation for the JMX technology, specification version 1.1, and to build related tools.