• Save
Java Open Source Training
Upcoming SlideShare
Loading in...5
×
 

Java Open Source Training

on

  • 6,418 views

http://www.Intertech.com

http://www.Intertech.com

This is a slide deck from JavaOne by Intertech.

Statistics

Views

Total Views
6,418
Slideshare-icon Views on SlideShare
6,365
Embed Views
53

Actions

Likes
15
Downloads
0
Comments
0

6 Embeds 53

http://www.slideshare.net 38
http://www.techgig.com 6
http://10.150.250.21 3
http://192.168.6.52 3
http://www.linkedin.com 2
https://bb1.ucsadm.oregonstate.edu 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java Open Source Training Java Open Source Training Presentation Transcript

    • Java Open Source Development
      Intertech
      March, 2006
    • 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
    • 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.
    • 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.
    • 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.
    • 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.
    • 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.
    • 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)
    • User Interface & Web Frameworks
      MyFaces (JSF)
      Struts
      Tiles
      WebWork
      Cocoon
      Spring
      Tapestry
      jCharts
      jFreeChart
      JasperReports
      jFreeReports
      TagLibs (JSTL)
      Lucene
      Xalan
    • 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.
    • Struts
      Field validation
      Locale/internationalization support
      Plenty of extensions.
      Tiles framework for sophisticated layout management
      WebWork now folded into Struts Action Framework
    • 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).
    • 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
    • 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
    • Cocoon Pipelines
    • 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
    • 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++
    • Spring Framework
    • 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
    • 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
    • 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
    • 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.
    • 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
    • Middleware & Integration Products
      JBoss
      JOnAS
      Enhydra
      Tomcat
      Jetty
      Resin
      James
      Axis
      Xerces
      OpenJMS
      MantaRay
      ActiveMQ
      JORAM
    • 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
    • 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
    • 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.
    • 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
    • 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
    • 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)
    • Persistence & Persistence Frameworks
      Hibernate
      Castor
      ObjectRelationalBridge(JDO)
      DBCP
      HypersonicSQL
      MySQL
    • 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
    • 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
    • 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.
    • 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
    • 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.
    • 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
    • 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.
    • 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
    • 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
    • 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)
    • 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.
    • Testing Tools & Frameworks
      JUnit
      HttpUnit
      HtmlUnit
      JUnitPerf
      Cactus
      Jameleon
      JMeter
      Abbot
    • 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
    • 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
    • Support & Maintenance Tools
      Log4J
      Quartz
      Scarab
      Maven
      Bugzilla
    • 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)
    • 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
    • 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.
    • 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)
    • 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
    • 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