Fork me on GitHub

What is Apache Turbine?

Apache Turbine™ is a servlet based framework that allows experienced Java developers to quickly build secure web applications. Parts of Turbine can also be used independently of the web portion of Turbine as well. In other words, we strive to make portions of Turbine easily available for use in other applications.

A web based application is an application where users use their favorite web browser in order to access secure business logic.

Build a Web App

With Turbine + Maven you could easily develop a lightweighted and robust web app in a structured way. Find an example using Maven archetype mechanism here.

A platform for building applications, not just running them.

Many commercial (and non-commercial!) software companies will attempt to sell you an "Application Server", but what few people realize is that it is only half of the battle to creating a web application. There is often quite a lot of code that your engineers end up re-inventing the wheel with or grabbing various packages from all over the net with various licenses that you may or may not agree to.

The point of Turbine is to collect that code into one location and make it easy to create re-usable components (such as ParameterParsing, Database Connection Pools, Job Scheduling, GlobalCaches, integration with other tools such as Torque, Velocity, etc...) all under a license (Apache) that allows you to create useful websites for your customers without worrying about viral code. Turbine is not the end all answer, but it sure is a nice way to make your development life easier.

This framework has an intended audience that is directed at web engineers, not necessarily the web designers or front end engineers. By using this framework, it is possible for the web engineers to build intuitive high level systems for the web designers and front end engineers to use, but the low level framework is strictly for web engineers. Turbine is not a web application server. It is a tool for building web applications. Your servlet engine is your application server and the application that you develop using this framework is your web application.

Integration with Velocity is well defined and makes doing applications using these tools painless for both the developers and the web designers or front end engineers!

Turbine can be integrated with existing Velocity, Java Server Pages (JSP) and Cocoon technologies by specially creating Screens that use Services to parse templates. Screens can also be created to read files from other websites as well as off disk. This makes it easy to have designers simply put the body of a page on disk and Turbine can serve these files when requested. All of this is described in more detail in the documentation section below.

The reason why Turbine works so well is because it applies object oriented principles to the entire process of building a complex secure web application. We try to follow the Model 2 methodology yet expand on it to encompass "View" techologies other than just JSP as well as more mature methodologies such as Action Event handling. Turbine is consided as Model 2 + 1. :-) Please see the discussion of Model 2+1 for more information.

You may want to use JSON (de)serialization technics using Fulcrum JSON with Jackson 2, Gson or use Jackson mapper directly. Extending the models into any kind of views by following client view modelling, see e.g. MVVC should be no problem. You could achieve this in many ways, e.g. using Turbine plain JSON screen, Turbine JSON-RPC or customizing in Velocity Javascript templates.

This all sounds like a bunch of marketing talk, but in reality, Turbine has been developed by developers for developers. We are not trying to sell you something that does not really work, instead we are trying to solve (or do something about) the problems that our fellow developers keep having over and over again. Come be a part of the revolution!

Where do I get releases?

Download the current main release sources and binaries through the Apache mirror system at the turbine download site.

Currently, the best way to get started with Turbine is to use the Maven Archetypes, find it on GitHub. Eihter use it with a hosted database or use the docker profile. See also the blog post in the Turbine Blog for usage information.

How do I contribute, give feedback, fix bugs and so on?

We really need and appreciate any contributions you can give. This includes documentation help, source code and feedback. Discussion about changes should come in the form of source code and/or very detailed and well thought out constructive feedback. The How To Help document has details and hints how to get engaged with Turbine Development. We also have a To Do document that describes work to do with the current Turbine code.

Apache Turbine