HTML/Java Workflow & Architecture
Currently I’m thinking about different ways to set up a good set up for creating/changing websites. When your team consists of HTML/CSS developers on one side that know about user interaction, graphics and layouts and Java developers on the other side that excel at making data available and dealing with the complexities of 3rd party communications. The challenge is to set up the team and architecture for an effective workflow, letting everyone do what he/she does best.
The context is a company that has a lot of data and wants to make this data accessible through multiple channels and sites. The user experience is a very important, so tuning the websites on the HTML level is an ongoing activity. Expanding to new devices and websites is one of the (technical) objectives.
The way to set up the components and what abstractions to use is not obvious. After speaking to some peers in the industry, I’ve distilled three main options to choose from. Combinations are possible, but I’ll describe the simple case. I haven’t decided which is best, though and I might be overlooking some crucial things. My main goals for any solutions are:
- Zero round-trip while developing HTML/CSS/JS
- Independence of HTML developer when creating new ways to display the same data
- Smooth work-flow from concept to implementation.
- Largely independent from back-end
- Zero roundtrip when changing HTML
- There is only one version of the HTML (no conversion to templates)
- An extra layer of
- Performance and security
- Re-use is limited
Server Side Scripting
- HTML can be indexed by Google.
- Short roundtrip when changing PHP
- PHP code runs on a trusted server
- Simple enough for HTML developers
- Risk of PHP layer to grow too big
- Extra runtime environment needed (Apache)
- HTML only works after PHP parsing
The Java World
- Data access and HTML generation in one machine/JVM, easy and fast
- Short development time for Java-heavy applications
- Extra channels and websites will need to be modeled in the server framework
- Templates are not HTML, only work when run inside the Java framework
- Longer development round-trip, but needs full Java set-up with war overlay
So what’s the best? Of course it depends. Did I miss any pros or cons? What do you use to get maximum productivity from both your back-end and front-end developers.