Java Open Source Training

  • 4,499 views
Uploaded on

http://www.Intertech.com …

http://www.Intertech.com

This is a slide deck from JavaOne by Intertech.

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
4,499
On Slideshare
0
From Embeds
0
Number of Embeds
6

Actions

Shares
Downloads
0
Comments
0
Likes
15

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Java Open Source Development
    Intertech
    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 - http://www.informationweek.com/story/showArticle.jhtml?articleID=51201599&tid=5979
    2 - http://www.dwheeler.com/oss_fs_why.html
  • 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?
    Benefits/Issues
    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)
    Struts
    Tiles
    WebWork
    Cocoon
    Spring
    Tapestry
    jCharts
    jFreeChart
    JasperReports
    jFreeReports
    TagLibs (JSTL)
    Lucene
    Xalan
  • 11. MVC Frameworks
    Purpose of Struts and JSF: application frameworks for building Web applications
    Struts – the old stand-by
    struts.apache.org
    Launched in 2000
    Creator same as JSF (Craig McClanahan – now with Sun)
    JSF – the new stand-by
    MyFaces – Apache implementation of JSF
    myfaces.apache.org
    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
    blogs.sun.com/roller/page/craigmcc/20040927#struts_or_jsf_struts_and
    Bottom-line
    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
    cocoon.apache.org
    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
    jakarta.apache.org/tapestry
    Started in 2000
    Just release version 4
    Good comparison of JSF to Tapestry at:
    www.theserverside.com/articles/article.tss?l=JSFTapestry
  • 18. Spring Application Framework
    A comprehensive, layered Java/J2EE application framework
    www.springframework.org
    Started 2003
    Version 2 soon to be released
    Features
    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 java-source.net/open-source/charting-and-reporting
    Commercial competitors include: JClass, EspressChart, ChartFX, and many more…
    jFreeChart
    www.jfree.org/jfreechart/index.php
    First released in 2000
    Krysalis jCharts
    jcharts.sourceforge.net
    First released in 2000
  • 21. Java Reporting tools
    Dozens of options
    Many open source options at java-source.net/open-source/charting-and-reporting
    Commercial competitors include: Formula One, JReport, and many more…
    JasperReports
    jasperreports.sourceforge.net
    www.jaspersoft.com
    “Most popular embeddable open source reporting library”
    JFreeReport
    sourceforge.net/projects/jfreereport
    Introduced in 2002
  • 22. TagLibs
    Is an “open source repository for JSP custom taglibraries and associated projects.”
    jakarta.apache.org/taglibs
    Includes the reference implementation of the Java Server Pages Standard Tag Library (JSTL)
    Includes
    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.
    lucene.apache.org
    Many well known web sites use Lucene (including Wikipedia, FedEx, Eclipse.org, 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.
    xml.apache.org/xalan-j
    Actually two versions of Xalan (Java and C++)
    Used to be part of the Apache XML Project
    Alternate: Saxon
  • 25. Middleware & Integration Products
    JBoss
    JOnAS
    Enhydra
    Tomcat
    Jetty
    Resin
    James
    Axis
    Xerces
    OpenJMS
    MantaRay
    ActiveMQ
    JORAM
  • 26. Application Servers
    Full J2EE Stack containers
    Supporting servlets, EJBs, JMS, JCA, etc.
    JBoss (jboss.org – claims to be the #1 Java app server on the market)
    JOnAS (jonas.objectweb.org)
    Enhydra Enterprise (www.enhydra.org)
    Apache Geronimo (geronimo.apache.org - just released version 1.0)
    GlassFish – Sun’s open source EE app server (https://glassfish.dev.java.net/)
    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
    1 http://www.theserverside.com/news/thread.tss?thread_id=24501
  • 27. App Server (cont.)
    Servlet/JSP/Web containers
    Tomcat (tomcat.apache.org)
    Jetty (jetty.mortbay.org/jetty)
    Resin (www.caucho.com - has some EJB functionality)
    See Server Side’s App Server Matrix
    www.theserverside.com/articles/article.tss?l=ServerMatrix
  • 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.apache.org
    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.
    ws.apache.org/axis
    Few real alternatives, but are some add-ons
    See java-source.net/open-source/web-services-tools
  • 30. Xerces Java (Xerces-J)
    An XML parser.
    Fully conforming XML Schema processor
    Supports SAX 2
    Supports DOM level 3 and 2
    xerces.apache.org
    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
    See java-source.net/open-source/xml-parsers
  • 31. JMS Implementations
    There are several open source Java Message Service API implementations.
    OpenJMS
    ActiveMQ
    JORAM
    Mantray
    See java-source.net/open-source/jms
    Full J2EE servers also support JMS.
    Open source ESBs – still emerging
    ServiceMix (ActiveMQ producer)
    OpenESB (open-esb.dev.java.net)
    Celtix (celtix.objectweb.org – Iona and ObjectWeb)
  • 32. Persistence & Persistence Frameworks
    Hibernate
    Castor
    ObjectRelationalBridge(JDO)
    DBCP
    HypersonicSQL
    MySQL
  • 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
    www.hibernate.org
    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
    www.castor.org
  • 35. ObJectRelationalBridge - OJB (JDO)
    JDO (Java Data Objects) is a Java specification
    java.sun.com/products/jdo
    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
    db.apache.org/ojb
    Many open source and commercial implementations of JDO
    KodoJDO is leading commercial implementation.
    See www.jdocentral.com.
  • 36. Comparing Persistent Frameworks
    Options
    Roll-your-own with JDBC/POJOs
    OR mappers á la TopLink, CocoBase
    Hibernate
    JDO implementations
    EJBs
    Other open source options (Castor, iBATIS)
    Bruce Tate and others have given several talks
    dev2dev.bea.com/pub/a/2003/07/Java_Persistence.html (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
    jakarta.apache.org/commons/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 (www.polepos.org)
    Offered as optional/free database server for many commercial products
    Example: Systinet Registry
    hsqldb.org
    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
    Eclipse
    NetBeans
    jEdit
    Java CVS Client
    SQuirreL
    ArgoUML
    JLint
    Velocity
    Jalopy
    ProGuard
    Ant
    AntHill
    Commons
    XDoclet
    Maven we save for later.
  • 40. IDEs and Editors
    IDEs – many to choose from; few widely used
    Eclipse (Eclipse.org)
    NetBeans (NetBeans.org)
    Significant commercial competitors (WSAD, IntelliJ, JBuilder,..)
    Java Editors – many to choose from
    jEdit – (www.jedit.org)
    TextPad (textpad.com - not Java) – also provides Java edit, compile, execution
    JBuilder is not being open-sourced despite reports on Registry.com
  • 41. Eclipse vs. NetBeans
    Eclipse
    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
    NetBeans
    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 (www.jcvs.org)
    SQuirreL – a Java SQL client application (squirrel-sql.sourceforge.net)
    ArgoUML – UML 1.4 design tool (argouml.tigris.org)
    JLint – Java code checker looking for bugs, inconsistencies and synchronization problems (artho.com/jlint)
    Velocity – a template engine (jakarta.apache.org/velocity)
    Used in several Apache projects
    Jalopy – code formatter (jalopy.sourceforge.net)
  • 43. Additional Development Tools (cont)
    ProGuard – code obfuscator (proguard.sourceforge.net)
    Many IDEs, like NetBeans, uses ProGuard
    Ant – build tool (ant.apache.org)
    Antelope - A GUI for running Ant and editing build files (antelope.tigris.org)
    AntHill – controller for the build process (www.urbancode.com/projects/anthill)
    XDoclet – A source code or other document generation engine (xdoclet.sourceforge.net/xdoclet)
    XDoclet is an extension to the Javadoc Doclet engine
    Commons – a library of all sorts of reusable Java components (jakarta.apache.org/commons)
    There are often many competitors – these tend to get most of the attention in their perspective area.
  • 44. Testing Tools & Frameworks
    JUnit
    HttpUnit
    HtmlUnit
    JUnitPerf
    Cactus
    Jameleon
    JMeter
    Abbot
  • 45. Unit Testing
    JUnit is the original unit regression testing framework
    www.junit.org
    Has many extensions and IDE adapters
    HttpUnit is a unit testing framework for testing web based applications
    www.httpunit.org
    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.sourceforge.net
    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.
    www.clarkware.com/software/JUnitPerf.html
    Cactus is a framework for unit testing server-side java code (Servlets, EJBs, tags, Filters, ...).
    jakarta.apache.org/cactus
    Extends JUnit
  • 46. Beyond Unit Testing
    Jameleon is an integration and acceptance-level testing tool.
    jameleon.sourceforge.net
    JMeter is a tool to load test and measure (performance) functional behavior
    jakarta.apache.org/jmeter
    Abbot is a tool for unit and functionally testing Java GUI (Swing/AWT)
    abbot.sourceforge.net
    A lot of commercial competition in testing market
    Mercury, CompuWare, Quest (JProbe) and others
    See opensourcetesting.org for other open source alternatives
  • 47. Support & Maintenance Tools
    Log4J
    Quartz
    Scarab
    Maven
    Bugzilla
  • 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
    logging.apache.org/log4j
    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
    www.opensymphony.com/quartz
    Flux is a commercial competitor
  • 50. Project Management
    Maven
    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
    maven.apache.org
    Scarab
    Scarab is an issue and artifact tracking tool.
    scarab.tigris.org
    Bugzilla is leading open source bug tracking tool.
    Not Java!
    Plenty of commercial competition on management tool side.
  • 51. Java JVM
    Miscellaneous
    Jikes – IBM open source JVM
    Developed in 1997 by IBM alphaWorks
    Typically faster than Sun’s JVM implementation
    Usually comes with Linux distributions
    jikes.sourceforge.net
    AspectJ
    Aspect-oriented extension to Java
    www.eclipse.org/aspectj
    Java and other language mixes
    Groovy – Java-like scripting language on JVM (groovy.codehaus.org)
    JRuby – Ruby interpreter in Java
    (jruby.sourceforge.net)
    Jython – Python interpreter in Java
    (www.jython.org)
  • 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:
    java-source.net
    jakarta.apache.org
    TheOpenSourcery.com
    SourceForge.net
    OSDir.com (O’Reilly’s open source page)
    FSF.org (Free Software Foundation)
    Gnu.org
    Richard Monson-Haefel on “Rebel Frameworks”
    http://www.burtongroup.com/research_consulting/doc.aspx?cid=650