Join has an extensive list of features. The following are the key one described in a nutshell:
This feature of Join allows you to manage all the artifacts of your software project: from the delivery of development teams to the production-ready build. It is able to connect to Software Configuration Management tools to collect promoted components and publish all the artifacts onto repositories (Structured file system, FTP or WebDAV implementations at time of writing).
Join allows you to specify your test and validation environments in terms of resources, services gateways and physical machines. It acts as a Configuration Management Tool for your environments by letting you define your own elements and track configuration changes on the environments elements.
Join application defines a minimal workflow that can be adapted to your own project Integration Process. The workflow transitions acts as event producers that can be asynchronously processed. Join is made to easily integrates triggers for these events by providing adapters for script languages such as Ant, Javascript or Groovy. Therefore, web frontend actions can be translated into scripts execution for automating your software builds or deployments.
Join can also be seen as a communication tool, allowing teams to be up-to-date with project integration events. Information diffusion can be done through the portal interface, through mailing lists with a subscription system on fine grained events or through RSS feeds. Every workflow event can be published through these means.
Integration with other enterprise software is possible through the use of Web Services. Many Join services are exposed as SOAP, Hessian or XML-RPC web services. An example of integration use-case is an Eclipse plugin allowing developper to deliver its work into Join from the IDE (Check here for this work in progress).
Join uses Hibernate as the ORM tool for the persistence layer which enables pluggable databases (Hypersonic, MySQL, PostgreSQL, and Oracle tested at time of writing). This allows your organization to leverage existing resources without having to purchase new database hardware and software.
Join leverages off of Struts and Tiles frameworks to follow the MVC pattern. The look and feel of the application can be easily customized and reskinned because the display logic is concentrated in a few template files read by Tiles. The web interface supports internationalization through the usage of Struts message resources bundles. Language resources for English, French and Spanish are already provided.
Join is very scalable in many ways. Its architecture has been designed with scalability in mind.
First, it allows you to deploy web application and workflow scripts - running asynchronously -
on separate machines. Thus, you may have dozens of scripts triggered by a workflow event without
affecting the response time of the server running web application.
The web application itself is made to be clusterable and uses a pluggable cache provider architecture.
You can scale by adding more nodes without sacrificing on caching.
Finally, the asynchronous part running scripts is also scalable thanks to the high availability
configuration options of ActiveMQ, the JMS provider used for event publication.