Sunday, September 23, 2007

Middle-tier Terminology and Concepts















If you are at a party, barbecue, tail-gate or other social event the topic of middleware or middle-tier may come up. This article will teach you enough to join in or maybe more importantly to walk away.

There are a lot of different languages used to build web applications. The key point to remember is that all of them end up generating HTML code that is returned to a browser. This article is going to focus on key areas of Java environments.

Key technology components developers may need to learn independent of vendors:
  • Java 2 Enterprise Edition (J2EE)
  • Web Services
  • Object Relational Mappers (ORM)
  • Service Oriented Architecture (SOA)
  • eXtensible Markup Language (XML)
  • Security Assertion Markup Language (SAML)
  • Business Process Execution Language (BPEL)
  • Java Frameworks and Design Patterns
  • Lightweight Directory Access Protocol (LDAP)
  • Hyper Text Markup Language (HTML)
This technical foundation is based on proven industry standards. Defining this technical foundation is helping organizations understand the skill sets their teams will need to support current and future web-based applications.

The ability to quickly build composite Internet applications is very important to a lot of organizations. This can significantly reduce costs and time to market. The ability to have a high degree of reuse is also an important key for this. The tools we’ve listed have become a popular way to achieve these results.

Terminology and Concepts

The following are high level definitions of key technical features, concepts and terminology:
  • Eclipse, NetBeans and JDeveloper - These are Integrated Development Environments (IDEs) used by developers to build web-based applications. There are wizards and interfaces for developing with J2EE, SQL, HTML, Web Services, SOA, JSF, JSP, Servlets, EJBs, Struts, etc. This IDE should be looked at as a development environment for developing database and Internet applications.
  • Java 2 Enterprise Edition (J2EE) - J2EE is an industry standard for developing enterprise multi-tiered applications. J2EE is an architecture and framework for enterprise wide applications. J2EE applications include JSPs, JSFs, Servlets, ADF Faces, EJBs, etc.
  • Struts and Frameworks (ADF) - Struts is a J2EE development framework that is based upon best practice design patterns for building Web applications. Struts is based upon the Model-View-Controller that separates User Interface, Business and Data logic. J2EE frameworks can be complex and it can be difficult to determine how to organize different components. Struts helps organize J2EE components into a well organized Web application. Spring is a multi-layered Java/J2EE application framework.
  • Hibernate and TopLink - Object Relational mappers that manages the communication between Java (object-oriented) applications and the database (relational).
  • XML - XML has become the universal language for transmitting data structures independent of the environment. J2EE, Web Services, SOA and BPEL use XML.
  • Web Services - Web (software) Services uses XML standards and transport communication protocols to exchange data between applications. Web services allow different types of applications to communicate. Web services are standards that define the semantics for how software communicates.
  • Service Oriented Architecture (SOA) - SOA is an architecture that defines how loosely coupled software services communicate with each other. SOA increases reusability, that allows different software services to identify and communicate with each other.
  • Business Process Execution Language (BPEL) - BPEL is a standard for organizing reusable web services into more than one type of process flow.
  • Identity Management - Identity Management provides enterprise management of user identities across resources inside and outside the firewall.
  • Single Sign-On (SSO) - SSO provides unified authentication allowing a user to logon once and SSO will manage single sign-on capability across applications.
  • Clustering - Clustering spreads software components across multiple machines for high availability and failover. Clustering has techniques for keeping the different platforms synchronized.

Conclusion

Current tools hide a lot of the technical complexity behind middle-tier solutions. However, dependent upon the customizations made to applications, developers may need a strong understanding of the technical components of middle-ware technology.

There are three types of developers that need to learn the products in the middle-tier Technology Platform:
  • Traditional Developers - Developers that have used Oracle Forms, Reports, Discoverer, PowerBuilder, Cobol, Visual Basic, C/C++, etc. are going to need to learn the technologies supported in Internet development environments. Most Java developers are going to have to be knowledgeable with some or all of these technologies.
  • Traditional Applicaiton Developers - If you are a developer who has customized Oracle, Siebel, PeopleSoft, JD Edwards, SAP, Retek, Stellent and you are not likely to hit the lottery jackpot, then learning to develop web applications is in your future.
  • Internet Developers - Developers building Internet applications are likely to work with some or all of the products we have discussed in this article. Internet developers may be working with Eclipse instead of JDeveloper, or Hybernate instead of TopLink or Apache or JBoss. However the principles of Frameworks, ORMs, Design Patterns, J2EE, Managing Web Services, XML and SOA are still going to be technical areas that need to be understood. Internet developers may also be using PHP, Python, Javascript, Ruby on Rails, Groovy or other web development solutions.
It is important to understand that components such as J2EE, Web Services, XML, SOA, etc are not just tied to any vendor. They are based on open standards. Skills in the technology discussed in this article are incredibly valuable in any Internet development environment. LAMP or some variation of LAMP can provide some very powerful yet very inexpensive solutions compared to large vendors such as IBM and Microsoft.

These open standard components are moving into your future like a freight train. They require skills that are going to be incredibly marketable and valuable in the future.

No comments: