KnowHow - Technologies

Your application shall be visually attractive, usable on slow internet lines and have a configurable Look&Feel. Your customers expect that content be accessible in various formats. HTML is today's primitive technology, but it's not sufficient. And you expect your application to be secure, of course, but this is not self-evident.

The creation of a successful web application is a challenge for a development team. You have to choose from the available technologies the ones that fit best your needs. A profound knowledge of the applied tools, languages and libraries is necessary to drive your product to success. The selection of a framework must be taken with great care, as this binds your invested money for years.

We lay out some of present key technologies where we have special KnowHow:


HTML/CSS

The basic technology for your layout. CSS was developed as an extension language to HTML, to ease exact positioning and formatting of HTML elements. Well done CSS allows for switching of Look&Feel by using a different CSS only.

You can use CSS for a simple print-view or to support different client devices, like cell phones or braille devices. But, HTML and CSS only provide static content

Javascript

Javascript an object oriented language, supporting a C-like syntax, which is usually embedded in HTML and will be executed in the browser of your client. It can be used to respond to interactive user input and thus create pages that have some dynamic appearance. You can give a user immediate response on form input for example. Calculators, calendars or responding to resize of the window are very common javascript applications nowadays.

As javascript code is executed on the client, security is a big issue here, and for that reason it was very common to disable it in the browser in past times. Improvements in browser security allow for enabling it again in most cases. Ajax, a new technology which drives interactive web applications a step further is heavily based on javascript. So the number of web sites that rely on javascript being enabled grows heavily.

Ajax

This technology is almost a synonym for the buzzwords WEB 2.0. It is based on javascript and allows for asynchronous access to the webserver. Thus you have access to powerful logic on the server while viewing a page and there is no need for loading a new one while data is retrieved via the network. Certain areas of your pages can be renewed, database action on the server can be executed or a map be loaded, all without reloading the page.

Flex2/3

Flex2 is a young technology brought to life by Adobe. You can develop Rich Internet Applications (RIA)'s, which will be executed in the flash player (>=9).

Flex2 web applications have a Look&Feel that remind on desktop applications. They look great and are very responsive. Flex2 has a very rich component library, which allows for developing of convincing applications effectively. Reporting with rich, interactive charts or audio/video applications are developed easily.

Flex2 advocates a clean component model with events for gluing together loosley coupled modules. Most components of the library are adaptable and customizable, giving the developer a high degree of flexibility. The styling of your application can be mostly done using CSS. MVC can be easily realized, thus supporting the development of big projects in a clean way.

In mid 2007 Adobe decided to carry on Flex with Version 3 as an OpenSource project. This is good news for security of investment and surely allows for a widespread usage among OpenSource developers. AIR is another interesting development by Adobe. This runtime environment enables flex applications to run locally, independent of a browser.

XML - Parser(SAX, DOM, Pull) - Transformer (XSLT)

XML is a base technology in data exchange nowadays. HTML in it's strict variant is an XML application. It is vital in the domain of webapplications to apply XML in a superior way, i.e. parsing, creation and transformation is every day business. Yet, choosing the right parser in a particual case isn't a trivial issue. Memory footprint, performance and cleanness of code need to be taken into account.

Transformers like Xalan or Saxxon implement a template language. These are quite different to procedural or object oriented programming languages. They are nevertheless the ideal choice for transforming XML dialects, like from data centred XML documents to layout dominated ones like HTML or FO. Special care must be taken organising the code. A stylesheet of a few hundred lines created by clumsy hands can very easily become a inscrutable, unmaintainable piece of code.

PDF: FO - FOP/Antenna House - XFDF

HTML and CSS create great screen output, but they are in general not sufficient for good printing results. PDF is proven for first class printing results, and there exists technology to generate PDF from dynamic content. FO, a descriptive language for pages, is a powerful XML standard. There are commercial and OpenSource tools to generate high quality PDF. This provides a great opportunity to generate invoices online for your customers, or an excerpt of his order or the results of a search query.

FDF/XFDF is an ideal technology, to fill your existing high gloss brochures in PDF format with form data. It's easy to deposit form fields in an existing PDF and use it in a server process to fill it up with client or order specific information.

Java - Eclipse

Java is for a long time now base technology for webapplications. There exists a rich set of libraries and tools to support developers getting their things done. A lot of them are usable without the necessity to pay royalties, they are maintained and developed by a huge OpenSource community. Especially freely available Eclipse allows for a comfortable and effective Java development. Java has a focus on security and is available on almost any platform. All that gives you great security of investment.

Eclipse RCP

Eclipse is well known for as development environment for several programming languages. What is less commonly known: Eclipse is a powerful platform for rich client applications. Development can profit of its plugin architecture, it's rich visual components and a consistent Look&Feel. Since version 3.0 Eclipse implements a standard execution environment for java modules, the so called OSGi-Platform. One benefit is Hot Plugging. Modules can be replaced at runtime, even different versions of a modules can coexist. A strong feature is it's update mechanism. So RCP application can be developed that can be updated (half-)automatically over the network. With Java as base technology you can develop convincing cross-platform applications, that are easy to maintain and powerful.

Spring-Framework

The Spring Frameworks support the devloper creating a clean business layer in a java based webapplication. Based on various technologies like Dependency Injection, AOP and it's container, one is able to create a POJO based object model, clean of superfluous boiler plate code. Just that is a well known problem with webapplications, especially classical J2EE apps. In contrast the Spring Framework is non-intrusive and can even be integrated in existing applications. It has a clean and modular API and allows for rapid and testdriven development without the necessity of an application server.

Spring-MVC - JSP/JSF/Struts

Spring-MVC is a smart, clean implementation of the Model-View-Controller paradigm for webapplications and is based on the Spring-Framework. It isn't bound to a specific view technology and so allows for usage of the best fitting view technology in your project. Raw JSP pages are adequate as are Tiles or Velocity. Not enough, they can even be used in parallel. It's even common to use it for non-HTML views, like Excel via POI or PDF via iText or FOP. You can easily create your own view if that should become necessary.

The Struts Framwork is still quite common nowadays and JSF is also a good choice for a lot environments.

OR-Mapper: Hibernate

Hibernate helps the developer in object oriented systems to work with relational database systems. Loading and storing in such systems is done using the Object-Relational-Mapper. Hibernate is probably the most common OR-Mapper in the Java world, even though there is also a version for .NET. It is powerful and flexible and comes along with an OpenSource Licence.

There is a big gap between objects on the one side and a realational database system on the other. A mapping between both systems is often difficult to realize, just take inheritance as an example. Performance is another issue. And things become worse if you have not the full control over the database structure.

So OR-Mapper have to be used with great care, and there are some situations where it's best not to use them.

Data storage: Oracle/MySQL/PostgreSQL, Repositories

SQL DBMS are standard in data storage. Almost any application is developed today with access to a database. They are ideal for storing of person/address data or take share rate sequences. But what about binary data, like pictures, word documents etc. SQL databases are often of no use here, sometimes they make it difficult to administer or get direct simple access. Source code or complex documents should be versioned.

SQL Databases are quite particular beyond the SQL92 standard. You can use PL/SQL or views in Oracle to implement complex logic. You can get great performance advantages from that. But, do you ever intend to exchange the database by another one in the future, you may have to make big investments then. And it's problematic to spread application logic to the database and the application. Decisions here should be taken with care.

Subversion/GIT

Subversion should be regarded as the legitimate successor of CVS and it is actively developed for some years now. It fits ideal for developing source code. Using a secured https connection developers working on the same project can exchange source code via a central server. All old revisions can be restored at any time, branches are used to support concurrent devlopment lines and binary data is no problem. Subversion is very robust and reliable and regarding TortoiseSVN there is a tool which integrates seemlessly into Windows Explorer and makes working with it incredibly easy. It is also a good basis for setting up a Release Management System upon it, some companies use it to manage their documents.

It seems less usable in non-centralized projects. The linux kernel shall be mentioned here as an example and there has been developed an interesting Revision Control System around it, called GIT.