A quick overview of the incorporation.
March 10, 2010
Following is a list of links to java technologies that I have either worked with or am familiar with. I've tried to
organize them to some degree. Hope you find them useful. I've bookmarked each section here:
Java Technology
Java Frameworks
Web Servers
Java Testing Tools
Java Reporting Tools
ORM Tools
Java IDE's
Java Resources
> Java 1.4.2 SDK download - Here's the download for the java software development kit that most companies are using for development right now. Java 1.5 still seems to have some issues. At the recent No Fluff Just Stuff conference in Calgary, developers were almost discouraged to use 1.5.
> JavaServer Faces Technology - I'm developing with JSF on my current contract. I have found it configuration intensive, but we aren't using an IDE that supports dragging and dropping the JSF components. It is nice to be able to create custom components, and it will look good on my resume.
> Apache My Faces - The advantage to using JavaServer Faces in a project, is you can create you own custom GUI components for HTML. One of the main motivators behind the MyFaces project is to provide a free library of already developed components ready to use or extend for your project. We are currently using MyFaces extensively with JSF in my current project.
> JSTL - JavaServer Page Standard Tag Library. I've used this library on most of my java projects. Version 1.1 offers String formatting among other things that version 1.0 does not have.
> JRockit - JRockit is a mission critical, service oriented JVM developed by BEA to provide high performance on Intel platforms.
> Apache Struts - Struts is a very popular MVC (Model-View-Controller) framework that is used to develop the front end of java web applications. Struts has a component called 'Tiles' that is probably going to be split out into it's own project soon. Tiles is a VERY popular means to turn web pages into components that can be put together - much like the way frames used to be used in HTML. I have used both Tiles and Struts extensively in the past several years.
> Tapestry - Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server. Tapestry divides a web application into a set of pages, each constructed from components.
> Cocoon - Apache Cocoon is a web development framework built around the concepts of separation of concerns and component-based web development. Cocoon implements these concepts around the notion of 'component pipelines', each component on the pipeline specializing on a particular operation. This makes it possible to use a Lego(tm)-like approach in building web solutions, hooking together components into pipelines without any required programming.
> Spring Framework - The Spring Framework is a full application framework that a lot of java developers and companies are turning to for building java applications. While Struts is a front end framework, the Spring Framework can be used in every tier of your application. Struts, JSF, and many other technologies can be incorporated with Spring in development.
> Google Guice - A Java development framework that Google uses. It's fairly new but Google apparently already uses it in some mission critical applications. It's being compared to the Spring Framework as even more lighter weight. However it doesn't have all the features of Spring yet.
> Wicket - With proper mark-up/logic separation, a POJO data model, and a refreshing lack of XML, Wicket makes developing web-apps in Java simple and enjoyable again. Swap the boilerplate, complex debugging and brittle code for powerful, reusable components written with plain Java and HTML.
> Infoglue - Infoglue is one of the more popular free Java based CMS (Content Management Systems) tools out there. It uses Velocity templates and has good documentation and is very easy to install.
> Apache Tomcat - Tomcat is a very popular, java based, free, servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. It's a web server whose specialty is supporting JSP's. Most of my projects have used this server to one degree or another.
> Apache HTTP Server Project - The Apache HTTP Server is arguably the most popular, free, web server there is. While it's not written in Java, it is often used to piggy back a Tomcat server. Together, they efficiently server up web content for web applications. The Apache HTTP Server serves up static HTTP content (images, html files) and Tomcat servers up the dynamic content - jsp's.
> JBoss - JBoss is another free, java based web server - sort of a combination of tomcat and apache. It has a professional 'solutions provider' company behind it providing support.
> Apache Geronimo - Apache Geronimo is another, newer, free, servlet container. I haven't used this one yet.
> ATG Dynamo - ATG Dynamo is a poprietary java servlet container that is marketed by ATG. On top of being a web server, it provides an application framework for that includes custom tags, extensive marketing support, ORM mapping and more. I have worked with this framework, and even been asked to consult with this company.
> JUnit - JUnit is the certainly mosted used, free, java testing framework there currently is. With may companies looking for this on resumes, it's good to be familiar with what it's used for and how it works. My current project is the second project I've used JUnit on.
> HTTPUnit - HTTPUnit is also free, written in java, and is an automated testing tool/framework for testing web applications. Classes in this framework can be extended to provide useful programs for software applications as well. While I haven't used this on any projects, I'm using JWebUnit which is an extension that basically does the same thing, only it's easier to use.
> JWebUnit - JWebUnit provides a high-level API for navigating a web application, combined with a set of test assertions to verify the applications correctness.
> Satisfice.com - Satisfice is not a tool. It's James Bach's companies web site. He's a small 'a' agile test automation consultant. I saw a seminar of his at the U of C with the Calgary Agile Users Group. It was a fantastic presentation. His website is pretty interesting too. Check it out.
> JFreeChart - JFreeChart is a free java class library for generating at least 20 different kinds of reporting charts. I have used this in conjunction with CeWolf in a web application.
> CeWolf - CeWolf is a servlet framework and a tag library that supports the JFreeChart class library in the context of a web application. I used this on a medium sized enterprise application and had a lot of fun with it, generating 3d pie and vertical bar charts based on data.
> Jasper Reports - JasperReports is another open-source java reporting class library. I did a proof of concept with this, but ended up using JFreeCharts and Cewolf instead.
> OJB - ObJectRelationalBridge - OJB was the first ORM tool that I used as a java developer. We used it in a medium sized enterprise web application with a AS400 DB2 backend. While we did have to write some patches, and make some performance enhancements, it worked well for us, provided the relational integrity that the DB could not (it was a legacy database).
> Hibernate - Hibernate is a much more popular ORM tool that OJB and has been used in quite a number of production applications and considered quite stable. We are currently using it with the Spring Framework with the application I'm working on.
> IBATIS - IBATIS is a data mapping framework that can be used with both Java and .NET. We used this in conjunction with OJB to provide transaction management on an enterprise web application.
> Apache Ant - Apache Ant is a java application deployment tool that is probably used in 90% of the java applications currently in development. If you're a java developer and not familiar with Ant, you NEED to be.
> XDoclet - XDoclet is a java development tool that uses annotations in javadoc code to create configuration files. Supports most of the major java frameworks and technologies out there that require configuration files. I've used this on two projects and reccommend it.
> Castor - Castor is a XML tool that uses config files to automatically marshal and unmarshal xml to java beans and vice-versa. I've used it on two projects and was satisfied with it. Castor also has JDO, an ORM data-binding framework based on XML.
> Apache Lucene - Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform. I haven't used this personally, but seen examples of it.
> Macker - Macker is a built-time (read works in conjuction with Ant) rule checking utility for java developers, meant to enforce the architecture that programmers want to build during development.
> CruiseControl - CruiseControl is a continuous integration tool for development that I've worked with. In my experience, it works with Ant to provide a continuous build process.
> AHP - Ant Hill Pro - Anthill Pro is also a continuous integration tool for development that I've got experience with. However, this one's not free, but of course, it's got added features.
> Eclipse - The Eclipse IDE is an open-source (free) and popular IDE that is based on IBM's Websphere (or could be the other way around). At any rate, I've used it on a number of projects.
> JBuilder - Marketed by Borland, I've used the JBuilder IDE on one project. My experience wasn't intensive with this product, so I'll reserve judgement.
> IntelliJIdea - I have never used the IntelliJ IDE, but there are a number of seasoned Java developers in Calgary who actually buy their own license (it's not free either) to use it at work. It looks pretty handy.
> Netbeans - While I've never used the Netbeans IDE in a professional development environment, I have a copy on my machine and I've messed around with it a little. I'll reserve judgement here too (it is free, though).
> IBM WSAD - WSAD is IBM's IDE. I've used it on a couple of government projects - it's very handy too, but I wouldn't want to pay for the license myself!
> Java Ranch - This is a great web site of forums for java developers. Lots of good information in here for certifications and code help. I used it as a resource for my SCWCD certification.
> Java Practices - This web site is another great resource for java coding best practices. There's some good example pieces of code, as well as nice bits of prose about coding patterns etc.
> Java Almanac - This is a FANTASTIC resource for java developers. It has example bits covering all the major API for Java 1.4. I use this resource often.
> The Server Side - The Server Side is (in my mind) an online magazine mainly targetted to java developers. They have good articles about the different directions java is taking and new technologies to keep your eyes on.
> Java Beat - Java Beat has a number of good links and tutorials/articles about java technologies.