(over to JavaNotes)
XML Binding
https://bindmark.dev.java.net/ - a detailed comparison of many binding frameworks.
http://skaringa.sf.net - works very well for "inside-out" XML, i.e. you start with some Java objects and want to marshal them to XML, do something, and then unmarshal. Most of the other tools are designed to work "outside-in" i.e. you've got a DTD and want to get documents that match that DTD into Java. Very fast, very easy to get a handle on. Supports pipelined XSLT transforms which lets you generate/parse pretty much any XML structure.
http://www.bifrost.org/xmlio/ - looks similar to Skaringa, very Java-centric
http://jxv.sourceforge.net/ - xml<->objects
also JAXB (from Sun), Castor (from Exolab, very fussy).
http://jaxme.sf.net/ - another. sucky website, dunno bout the code.
http://sourceforge.net/projects/xjr/ - another
http://www.commerceone.com/developers/docsoapxdk/xgen.html - based on Castor, claims to have better support for XML schema features.
http://jibx.sourceforge.net/ - claims to be fast. decorates the compiled classes with code that lets them marshal and unmarshal themselves.
http://www-106.ibm.com/developerworks/library/x-databdopt/index.html - an article about java/xml data binding
rdbms binding
http://hibernate.sf.net/ - I've used this at work and it's
very good. Recommended.
Castor JDO.
Jakarta Torque -
http://jakarta.apache.org/turbine/torque/index.html
http://objectstyle.org/cayenne/ - looks pretty nice, has an integrated cache.
http://voruta.sourceforge.net/
http://freshmeat.net/projects/result-set-dom/ - DOM wrapper for SQL result sets, might be useful with Maverick
http://be4gle.sourceforge.net/ - a web UI framework that generates web pages that interact with the server using SOAP.
http://www.bs-factory.org/BSFDocs/Features/LOV.html -
List Of Values component that reads enumerated key/value pairs from the database and manages them. Part of a larger framework that's mostly oriented around Java fat clients.
http://discoverdbgui.sourceforge.net/ - a GUI that will pull metadata out of a database and put it in an XML file. I've used a tool from the Jakarta Torque project for the same purpose, but this might be easier in a one-shot case.
Persistence
http://www.prevayler.org - a framework for persisting Java objects.
http://javamatch.sourceforge.net/ - might be a good query front end to work with a Prevayler or POT back end.
http://dom-result-set.sourceforge.net/ - wraps jdbc result sets allowing them to be sent into pipelines
Code Format/Conventions
http://java.sun.com/docs/codeconv/ - Sun's code conventions
https://sites.google.com/a/android.com/opensource/submit-patches/code-style-guide - Android's style guide builds on the standard Sun conventions
QA/Metrics
JUnit -
http://www.junit.org/ - Testing Resources for Extreme Programming
http://doctorj.sourceforge.net/ - sort of like lint for Java
http://pmd.sourceforge.net/ - finds miscellaneous flaws in Java code.
http://www.jutils.com/ - claims to be more powerful than PMD because it performs "type analysis".
http://findbugs.sourceforge.net/ - another static analyzer from the university of Maryland.
UML
I like to have code generate documentation where possible, since that keeps the docs close to the code. I'm intrigued by the idea of literate programming but don't really have the time to pick it up.
Frameworks
Interesting server framework:
http://www.destinystar.com/
Apache Avalon:
http://jakarta.apache.org/avalon/
Open For Business -
http://www.ofbiz.org/ - an extensive framework released under a very liberal license.
Carbon Component Framework -
http://carbon.sourceforge.net/ - Sapient's Java/J2EE framework. Looks pretty good overall, covers a lot of the crufty things that j2ee doesn't.
Open Symphony -
http://www.opensymphony.com/
Keel "meta framework" -
http://keelframework.org/
"JEgg is a framework designed to reduce the complexity and cost of developing robust, multithreaded Java applications" -
http://jegg.sourceforge.net/
Charts/Graphs
JFreeChart - Java chart library, generates raster images from data -
http://www.jfree.org/jfreechart/. Looks very good. LGPL license, but docs cost $40. I've used this and it can do
anything but the API was a little confusing to me, so it's a good thing that the source is available. If you pay for the docs you also get a sample application (with source code) that's extremely useful.
MonarchGraph - a co-worker of mine recommends this -
http://www.singleton-labs.com/mgraph.php
JGraph - Swing component to manipulate graph structures interactively
http://jgraph.sourceforge.net/
TouchGraph - a tool for visualizing graphs -
http://sourceforge.net/projects/touchgraph/
Misc
Strangely enough, it can be hard to find a list of all of the command-line options to the
java
executable, especially the pesky but occasionally useful
-XX
options. Here's a page that lists many of them:
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp . One option that's missing on that page but is very useful is
-XX:+HeapDumpOnCtrlBreak
.
Tuning the Java garbage collector:
http://www.petefreitag.com/articles/gctuning/
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
How much heap will the JVM allocate by default?
http://stackoverflow.com/questions/2915276/what-is-the-default-maximum-heap-size-for-suns-jvm-from-java-se-6
The
Heap Analysis Tool analyzes Java heap dump files. It's included in Java 1.6 but can be downloaded to use with older versions:
https://hat.dev.java.net/
RHEL/Centos' version of jmap doesn't work by default, so to be able to dump the jvm's heap you need to install the openjdk "debuginfo" package.
https://forums.aws.amazon.com/thread.jspa?threadID=146195 , e.g.
$ sudo yum --enablerepo='*-debug*' install java-1.6.0-openjdk-debuginfo.x86_64
.
This is an interesting paper about how the singleton pattern gets abused, why that's bad, and one approach to working around the problem:
http://www-106.ibm.com/developerworks/webservices/library/co-single.html
Java(TM) 2 Platform, Enterprise Edition Blueprints |
http://java.sun.com/j2ee/blueprints/ This is how Sun thinks you should build big applications using Java. I pretty much agree, except that I don't like JSP.
Java Run-time Versioning -
http://java.sun.com/j2se/1.4.1/docs/guide/versioning/spec/VersioningTOC.html
http://jakarta.apache.org/commons/ - truly miscellaneous, but very useful code that's shared by Jakarta projects.
Java stack trace:
http://www.javaworld.com/javaworld/javatips/jw-javatip124.html
An article on JSR-108 the Java Units Specification:
http://www.onjava.com/pub/a/onjava/2004/01/07/units.html
Units and Measurements Package:
http://www.cs.queensu.ca/home/dalamb/java/units/
Decimal arithmetic for Java - 1.08 |
http://www2.hursley.ibm.com/decimalj/ also a great reference that explains why you don't ever want to use
float
or
double
to represent money.
https://taglibrarydoc.dev.java.net/ - the tool that sun seems to be using for their jsp documentation
http://opensource.yourdecor.ca/jspdoc/ - JSP documentation generator, like javadoc for jsp's. (I tried version
20020909 and it was pretty rough. I think that it would be good to integrate into a new project but it might be hard to retrofit into an existing one.)
ejb-jar reference -
http://www.ejb-ql.com/ejb-jar-ref.html - a nice html cross-reference of the ejb-jar.xml dtd.
Advanced Java Serialization -
http://java.sun.com/developer/technicalArticles/ALT/serialization/
http://www.macchiato.com/columns/Durable1.html - "Durable Java", a nice set of articles about Serialization, equals/hashCode, designing API's etc. Recommended.
What bytecode version was a given jar compiled for? You don't often need to know, but when you do, you really do:
http://alumnus.caltech.edu/~leif/opensource/bcver/index.html