CJAR - Comprehensive Java Archive Repository -Vision
Created: 2006-May-14 (copy of this)
Acknowledgments: My company SourceLabs made it possible and supports the efforts. Thank you SourceLabs.
Java technology has been around for more than a decade and has created great community and infrastructure. Java works everywhere and has deeply penetrated corporate IT and OpenSource alike. And still one important parts is missing: there is no an ubiquitous central repository of Java artifacts in the style of CPAN. There are some attempts to create repositories but they have their shortcomings:
-
maven repository on ibiblio; nothing more that directory structure;
-
JPackage project http://www.jpackage.org – great concept, but requires *nix and RPM manager to operate;
-
http://www.worldofjava.org/ - hmm, I do not think that developers should pay for repository access and should rely on some commercial entity to clean up repository and artifacts there. I think that the task is too big and should be handled by Java community at large;
-
http://www.jarhoo.com/ - what exactly do they search?
-
JSR-277 – I would guess that it might be in wide use (if it will be successful at all) not earlier than 2010 or later. I think we need something now to compete with Ruby and its Gems.
Availability of a central repository of all the Java artifacts will benefit all the participants in the Java space but the current landscape does not look bright and therefore I decided to create a service that has the ambitious goal of becoming THE Java repository: CJAR.
In my opinion the repository should be based on the following
Principles:
-
be client neutral; Ant, Maven, IDE-plugins, on Windows, GNU-Linux, Mac, whatever – should be able to have full access to the repository and its services;
-
be current; artifacts should in the repository no later than 2 days after teams release them; ideally projects will release artifacts in the repository;
-
be complete; 98% of all significant Java projects and libraries should be in the repository;
-
be inclusive; should not be limited to the Open Source projects; it should also hold commercial libraries and tools, perhaps demo, or time limited editions;
-
be fast; download speed should be limited to the client bandwidth;
-
be comprehensive; include various bytecodes versions for a particular release; with, or without debug information; obfuscated or not;
The goals are very ambitious but we need to make first step towards them and therefore I have created a beta release of such CJAR service. This release is available at http://area51.sourcelabs.com/cjar/ and has the following
Features:
-
search for Java artifacts by name or content (class and package names);
-
download links to jar files, and source and javadoc archives when available;
-
auto generated snippets to include into Maven or Ant build files;
-
info panel about artifacts: origins, licenses, etc;
-
JarDiff jar comparer tool to tell the exact differences between two Java archives;
-
Dependencies ‘shopping cart’ allows generating Ant and Maven build files based its content;
-
Dependencies report that lists all the jars in the selection plus additional information;
-
On-line services exposed via Hessian protocol: * simple search; * MD5 search;
-
Client side JarSetAnalyzer tool to analyze existing jar files and report meta-information about them: for example for anonymous dom4j.jar file the tool can tell that it is the version 1.5.1 and that version 1.6 update is available, it will also report applicable licenses. JarSetAnalyzer can be also used to check if all the used jar files were not altered; Services
Please look at the beta, try to use it and send your feedback so I can improve the tool. And it will better serve Java community at large. Feedback
Plans:
The CJAR has the ambitious goal of becoming The Java Repository and therefore it depends on community acceptance, transparency and feature completeness. The implemented features represent only tiny subset of all the intended features, which are outlined in the project roadmap
Just a few bullets:
-
create reports to highlight efficiencies in the artifacts: lack of sourse jars, javadocs, incomplete dependency information, licensing terms, lack of home page, and guide links, etc.;
-
management interface to allow project owners or trusted 'editors' to take care of their artifacts;
-
transparent and traceable submission process; all the artifacts should be “true to the original”;
-
user comments and ratings of artifacts;
-
cjar client to operate much like RPM for java artifacts;
-
and anything that YOU want to be available in CJAR!
Please participate in the creation of THE Java repository by sending us bugreports, feature requests, volunteering, etc.