Your SlideShare is downloading. ×
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Java Open Source Training
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java Open Source Training


Published on …

This is a slide deck from JavaOne by Intertech.

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. Java Open Source Development
    March, 2006
  • 2. Open Source (& Java Open Source) is Big
    There are over 110,000 open source projects today!
    There are about 20,000 Java open source projects!
    Nov 2004 report suggests 67% of all companies use open source products.
    With an 16% additional expected to join in 2005.1
    Sept 2003 reports suggests 41% of application development tools are open source.2
    It's Big
    1 -
    2 -
  • 3. Our Objectives
    This dialogue is an exploration of some of the more popular Java open source products/tools.
    With some 20K projects to choose from, we can’t look at them all.
    Give you a broad picture of Java open source landscape.
    Give you some options to explore for your own projects.
    Give you resources for more information/exploration.
  • 4. This is an Exchange – not a Lecture
    Did we mention this was a dialogue?
    We welcome and encourage audience participation.
    What open source products/tools have you encountered?
    What worked well for you?
    What blew chunks?
    What else would you include in our survey?
    Impromptu show-of-hands surveys should also help give you and idea of popular products in this area.
  • 5. Open Source Categorization
    To assist in our examination, we break Java open source projects up into several categories.
    User interface/Web frameworks
    Middleware and integration products
    Persistence frameworks
    Design and development tools
    Testing tools and frameworks
    Support/Maintenance tools
    Miscellaneous products
    Some products/tools cut across several categories.
  • 6.
  • 7. Product/Tool Examination
    What is the product/tool’s purpose?
    How long has it been in existence?
    Commercial counterparts/competitors
    If they exist
    Where “popular” competing projects exist
    Compare and contrast
    Project’s future
    We have left off Sun’s reference implementations.
    We assume everyone knows how to examine/get these.
    In many cases, these maybe your best option.
  • 8. An Open Source Drive-By Tour
    With the time we have, we only have time to mention products.
    Explore their general use/purpose.
    This is not a detail dive into the products.
    Unfortunately work left for you.
  • 9. Defining “Popular”
    We couldn’t possibly hit all the projects.
    We focus on popular tools/products
    Popular = widely used and active
    We also measure “popular” by:
    Ownership – who is in charge of the project now.
    Current Web site – and its last update.
    Documentation – quantity and quality.
    Setup/download – ease of getting/setting up the product/tool
    Forum/blog/news groups – what others are saying and how often (especially for support)
  • 10. User Interface & Web Frameworks
    MyFaces (JSF)
    TagLibs (JSTL)
  • 11. MVC Frameworks
    Purpose of Struts and JSF: application frameworks for building Web applications
    Struts – the old stand-by
    Launched in 2000
    Creator same as JSF (Craig McClanahan – now with Sun)
    JSF – the new stand-by
    MyFaces – Apache implementation of JSF
    Launched 2005 (JSF launched in 2004)
    Many of the frameworks can be weaved together.
  • 12. Struts
    Field validation
    Locale/internationalization support
    Plenty of extensions.
    Tiles framework for sophisticated layout management
    WebWork now folded into Struts Action Framework
  • 13. MyFaces (JSF)
    Implementation of Sun standard
    JEE 5.0 containers must provide an implementation of JSF
    First free implementation of JSF
    Focus on View of MVC (more “fat client” like).
    JSF  Struts + Swing
    Rich component model with event handling and component rendering
    JSF components handle the purely visually-oriented HTTP requests (example – clicking on a tree control).
    Business events go through the standard Struts-request-processing lifecycle (example – add this to my cart).
  • 14. Struts vs. JSF
    McClanahan's Weblog
    Struts users - think about migrating slowly to JSF
    New projects – think JSF
    The two can co-exist
    Unless unusual needs exist
  • 15. Cocoon
    An XML publishing framework.
    Based on Servlets.
    Manipulate the presentation layer using XSLT
    Includes a technology called "XSP" for Extensible Server Pages.
    Focus on separation of concerns
    Uses concept of component “pipelines” to process requests
    Around since 1999
    Version 2.0 recently released
  • 16. Cocoon Pipelines
  • 17. Tapestry
    Also a Java MVC Web application framework.
    Builds on the standard Java Servlet API
    Its ability to blend into a standard HTML markup is its distinguishing and most valuable feature
    Doesn’t use JSPs
    Tapestry “templates” are regular HTML, decorated with Tapestry attributes
    Inspired JSF Facelets
    Started in 2000
    Just release version 4
    Good comparison of JSF to Tapestry at:
  • 18. Spring Application Framework
    A comprehensive, layered Java/J2EE application framework
    Started 2003
    Version 2 soon to be released
    A complete lightweight container
    Aspect oriented framework
    Assembly of loosely-coupled POJOs
    A common abstraction layer for transaction management.
    A JDBC abstraction layer that can be integrated to/use Toplink, Hibernate, JDO, etc.
    Flexible/extensible app framework
    SpringMVC  Struts++
  • 19. Spring Framework
  • 20. Java Charting tools
    Dozens of options
    Many open source options at
    Commercial competitors include: JClass, EspressChart, ChartFX, and many more…
    First released in 2000
    Krysalis jCharts
    First released in 2000
  • 21. Java Reporting tools
    Dozens of options
    Many open source options at
    Commercial competitors include: Formula One, JReport, and many more…
    “Most popular embeddable open source reporting library”
    Introduced in 2002
  • 22. TagLibs
    Is an “open source repository for JSP custom taglibraries and associated projects.”
    Includes the reference implementation of the Java Server Pages Standard Tag Library (JSTL)
    JCP Standardized Tag Libraries (JSTL) a collection of tag libraries that cover conditionals, iterators, accessing URL resources, internationalization and text formatting, database access (SQL), and XML processing.
    Custom Tag Library Extensions (CTLX) are extensions for popular web publishing tools
  • 23. Lucene
    A high performant, scalable and full-featured text search engine library.
    Allowing you to add indexing and searching capabilities to your apps.
    Many well known web sites use Lucene (including Wikipedia, FedEx,, etc.)
    Around since ’97/’98
    First open source release in 2000
    There are competing products
    Not all Java
    Not as well used.
    Also behemoths like Google, Yahoo, etc. in this arena.
  • 24. Xalan Java (Xalan-J)
    An XSLT processor for transforming XML documents into HTML, text, or other XML document types.
    Implements XSL Transformations (XSLT) Version 1.0
    Implement XML Path Language (XPath) Version 1.0
    Implements JAXP 1.3
    Builds on SAX 2 and DOM level 3 parsers
    Can be used from the command line, in an applet or a servlet, or as a module in other program.
    Actually two versions of Xalan (Java and C++)
    Used to be part of the Apache XML Project
    Alternate: Saxon
  • 25. Middleware & Integration Products
  • 26. Application Servers
    Full J2EE Stack containers
    Supporting servlets, EJBs, JMS, JCA, etc.
    JBoss ( – claims to be the #1 Java app server on the market)
    JOnAS (
    Enhydra Enterprise (
    Apache Geronimo ( - just released version 1.0)
    GlassFish – Sun’s open source EE app server (
    WebSphere and WebLogic are biggest commercial competition
    Oracle a somewhat distant third.
    “During the next two years, open source application servers will gain share in the J2EE market, forcing further vendor consolidation“ – says the Meta Group1
  • 27. App Server (cont.)
    Servlet/JSP/Web containers
    Tomcat (
    Jetty (
    Resin ( - has some EJB functionality)
    See Server Side’s App Server Matrix
  • 28. James
    James is a SMTP and POP3 Mail server and NNTP News server.
    Also provides a Java mail API for use in applications
    Lets you write Java code email processor – called mailets.
    Mailets can generate an automatic reply, update a database, prevent spam, build a message archive, etc.
    Rumor has it future releases may support instant messaging.
    James is based upon the Apache Avalon application framework.
  • 29. Axis - SOAP Toolkit
    Axis is a tool kit for working with SOAP and WSDL
    SOAP and WSDL are the backbone XML documents in Web services.
    Axis shields developers from the details of dealing with SOAP and WSDL
    Axis is the most popular implementation of JAX-RPC.
    Few real alternatives, but are some add-ons
  • 30. Xerces Java (Xerces-J)
    An XML parser.
    Fully conforming XML Schema processor
    Supports SAX 2
    Supports DOM level 3 and 2
    Actually two versions of Xerces (Java and C++ - also have a Perl wrapper version)
    Used to be part of the Apache XML Project
    Alternate: many
  • 31. JMS Implementations
    There are several open source Java Message Service API implementations.
    Full J2EE servers also support JMS.
    Open source ESBs – still emerging
    ServiceMix (ActiveMQ producer)
    OpenESB (
    Celtix ( – Iona and ObjectWeb)
  • 32. Persistence & Persistence Frameworks
  • 33. Hibernate
    Attempts to be “non-intrusive” persistence solution.
    A lightweight object/relational mapping service.
    Using POJO’s and Java reflection
    Isolating mapping and SQL in XML configuration files
    Provides several means to access data including Hibernate’s own HQL
    Hibernate 3 now available
    The foundation of entity beans (EJB) in EJB 3.0
    Started in 2001
    Winner of Software Development Jolt award
  • 34. Castor
    Provides Java-to-XML binding and Java-to-SQL persistence.
    Two products: Castor XML and Castor JDO
    JDO similarities but not compliant with Sun’s JDO spec.
    SQL statements are automatically generated for loading, updating, creating and deleting.
    Uses subset of ODMG's query language
  • 35. ObJectRelationalBridge - OJB (JDO)
    JDO (Java Data Objects) is a Java specification
    Finalized in 2002
    Transparent persistence framework accomplished through byte code enhancement (which some don’t like).
    Spec does not dictate the type of data store (relational or object-oriented databases).
    Spec does not address object to relational mapping (mapping files will not be portable)
    OJB is an open source JDO implementation
    Many open source and commercial implementations of JDO
    KodoJDO is leading commercial implementation.
  • 36. Comparing Persistent Frameworks
    Roll-your-own with JDBC/POJOs
    OR mappers á la TopLink, CocoBase
    JDO implementations
    Other open source options (Castor, iBATIS)
    Bruce Tate and others have given several talks (although some comments are outdated)
    Outlining pros/cons of each
  • 37. DBCP
    Part of the Apache commons project (more in a bit)
    Provides database connection pooling services
    Tomcat and James use DBCP
    There are several connection pool utilities.
    Most servers have them built in.
  • 38. Hypersonic SQL (HSQLDB)
    Hypersonic SQL is full relational database engine.
    Written in Java
    Provides a JDBC driver
    Supports a large subset of ANSI-92 SQL
    PolePosition is a benchmark test suite to compare database engines and object-relational mapping technology.
    Found HSQLDB/JDBC to be one of the more performant open source DBs (
    Offered as optional/free database server for many commercial products
    Example: Systinet Registry
    There are a number of Java open source RDBMS.
    Of course, MySQL, though not Java, is the world's most popular open source database
  • 39. Design and Development Tools
    Java CVS Client
    Maven we save for later.
  • 40. IDEs and Editors
    IDEs – many to choose from; few widely used
    Eclipse (
    NetBeans (
    Significant commercial competitors (WSAD, IntelliJ, JBuilder,..)
    Java Editors – many to choose from
    jEdit – (
    TextPad ( - not Java) – also provides Java edit, compile, execution
    JBuilder is not being open-sourced despite reports on
  • 41. Eclipse vs. NetBeans
    Based on IBM/OTI’s work which started in ’98
    Released to open source in 2001
    Built on premise of plug-ins on top of base platform
    Dozens of plug-ins and projects
    Allows for non-Java development
    Most popular IDE
    Requires assembly of many plug-ins based on needs
    Made open source by Sun in 2000
    Heavily influenced by Sun
    Governed by community and 1/3 by Sun
    More all-encompassing/inclusive (no plugins required) Java develop platform
  • 42. Additional Development Tools
    jCVS – a Java CVS Client (
    SQuirreL – a Java SQL client application (
    ArgoUML – UML 1.4 design tool (
    JLint – Java code checker looking for bugs, inconsistencies and synchronization problems (
    Velocity – a template engine (
    Used in several Apache projects
    Jalopy – code formatter (
  • 43. Additional Development Tools (cont)
    ProGuard – code obfuscator (
    Many IDEs, like NetBeans, uses ProGuard
    Ant – build tool (
    Antelope - A GUI for running Ant and editing build files (
    AntHill – controller for the build process (
    XDoclet – A source code or other document generation engine (
    XDoclet is an extension to the Javadoc Doclet engine
    Commons – a library of all sorts of reusable Java components (
    There are often many competitors – these tend to get most of the attention in their perspective area.
  • 44. Testing Tools & Frameworks
  • 45. Unit Testing
    JUnit is the original unit regression testing framework
    Has many extensions and IDE adapters
    HttpUnit is a unit testing framework for testing web based applications
    HttpUnit models the HTTP protocol – testers deal with request and response objects.
    HtmlUnit is also a unit testing framework for testing web based applications
    HtmlUnit models the returned document – testers deal with pages and forms and tables.
    JUnitPerf is a collection of JUnit test decorators used to measure the performance and scalability within existing JUnit tests.
    Cactus is a framework for unit testing server-side java code (Servlets, EJBs, tags, Filters, ...).
    Extends JUnit
  • 46. Beyond Unit Testing
    Jameleon is an integration and acceptance-level testing tool.
    JMeter is a tool to load test and measure (performance) functional behavior
    Abbot is a tool for unit and functionally testing Java GUI (Swing/AWT)
    A lot of commercial competition in testing market
    Mercury, CompuWare, Quest (JProbe) and others
    See for other open source alternatives
  • 47. Support & Maintenance Tools
  • 48. Log4J
    Ubiquitous framework for logging application debugging messages.
    JDK logging offer similar functionality today.
    Apache Commons provides a bridge to either logging utility
    Sometimes Log4J will conflict with other logging packages in environment/server
    Around since 1998
    Version 1.3 expected this year (2006)
  • 49. Quartz
    Quartz is a job scheduling system
    Jobs run on any number of triggers.
    Quartz can run stand-alone or in a cluster
    It can run embedded within another application
    It can be instantiated within an application server or servlet container)
    It can participate in XA transactions
    Flux is a commercial competitor
  • 50. Project Management
    A “software project management and comprehension” tool.
    Initially started as a means to simplify the build processes in the Jakarta Turbine project.
    Uses concept of project object model.
    It is a site and documentation tool
    It extends Ant
    Scarab is an issue and artifact tracking tool.
    Bugzilla is leading open source bug tracking tool.
    Not Java!
    Plenty of commercial competition on management tool side.
  • 51. Java JVM
    Jikes – IBM open source JVM
    Developed in 1997 by IBM alphaWorks
    Typically faster than Sun’s JVM implementation
    Usually comes with Linux distributions
    Aspect-oriented extension to Java
    Java and other language mixes
    Groovy – Java-like scripting language on JVM (
    JRuby – Ruby interpreter in Java
    Jython – Python interpreter in Java
  • 52. Wrap Up
    Raise the open source awareness level!
    There is probably an open source tool for almost every part of your application’s lifecycle.
    In most cases there is more than one option.
    Even if you have the funding for commercial products
    Explore open source alternatives – may be just as good or better
    Explore the features, benefits, issues so you know what you want in a commercial alternative
  • 53. Recourses
    For more information, check out these references: (O’Reilly’s open source page) (Free Software Foundation)
    Richard Monson-Haefel on “Rebel Frameworks”