Web Glossary part one: Application tier


As I mentioned in my last post, one of the ways we are helping our teams get a better understanding of the wild and wacky world of the Web and Web developers is via a glossary we’ve created.  In compiling this I pulled information from various and sundry sources across the Web including wikipedia, community and company web sites and the brain of Cote.

Over the next several entries I will be posting the glossary.  Feel free to bookmark it, delete it, offer corrections, comments or additions.

Today I present to you, the Application tier.

enjoy

General terms

  • Runtime: A programming language e.g. Java, .NET, JavaScript, PHP, Python, Ruby…
  • Application framework : Provides re-usable templates, methods, and ways of programming applications. Often, these frameworks will provide “widgets” and “libraries” that developers use to create various parts of their application – they may also include the actual tools to create, deploy, and run the final application. Some application frameworks create whole sub-cultures of developers, such as Rails which supports the Ruby programming language.  Most application frameworks are open source and free, though there are also many closed source, not-free ones.
  • Continuous code development lifecycle: releasing software at more frequent intervals (30 days or less) by (a.) doing smaller batches of code, and, (b.) using tools and processes that enable a more lean approach to development. Software released in such a cycle tends to release many small features instead of, in contrast, “traditional” development where 100s of features are bundled up in one version of the software and released every 1-2 years.

Programming languages

  • Java/.NET:  The incumbent enterprise development languages.  Very powerful but relatively difficult to learn and take time to program in.
  • Dynamic languages: e.g. PHP, Perl, Python, JavaScript, and Ruby.  They are popular for creating web applications since they are both simpler to learn and faster to code in than traditional enterprise standards like Java. This offers a substantial time to market advantage, particularly for smaller projects for which the benefits of Java are less applicable.
    • PHP: a server-side scripting language originally designed for web development to produce dynamic web pages.  WordPress is written in PHP, as well as Facebook and countless web sites. PHP is infamous for being very quick and easy to get started with (which it is) but turning into a mess of “spaghetti code” after years of work and different programmers.   PHP is open source, though Zend, the patron company behind PHP, and others sell “commercial” versions.
    • Perl:  One of the original programming languages of the web, Perl emphasizes a very “Unix way” of programming. Perl can be quick and elegant, but like PHP can result in a pile of hard to maintain code in the long term.  While Perl was extremely popular in the first Internet bubble, it has sense taken a back-seat to more popular development worlds such as PHP, Java, and Rails. Perl is open source and there are few, if any, commercial companies behind it.
    • Python: Like all dynamic languages, Python emphasizes speed of development and code readability. Its an object-oriented language. Python is something of an evolution of Perl, but it not that closely tied to it. Python emphases broadness of functionality while at the same time being a proper, object oriented programing language (not just a way to write “scripts”). Python enjoys steady popularity; Google uses Python as one of its primary programming languages.
    • JavaScript: once a minor language used in web browsers, JavaScript has become a stand-alone language on its own known and used by many programmers. Most web applications will include the use of JavaScript.
    • Ruby: Ruby and Python are very similar in ethos: emphasizing fast coding with a more human-readable syntax. Ruby became famous with the rise of Rails in the mid-2000s which was a rebellion against the “heavy weight” practices that Java imposed on web development.  Ruby is still very popular.  Ruby can also be run on-top of the Java virtual machine (via JRuby), providing a good bridge to the Java world.  Salesforce’s acquired PaaS, Heroku, uses Ruby, and most modern development platforms use Ruby.
    • Ruby on Rails: a popular web application framework written in Ruby.  Rails is frequently credited with making Ruby “famous”.
    • Scala:  A somewhat exotic language, but it has quite a buzz around it. It’s good for massive scale systems that need to be concurrent (lots of people changing lots of things, often the same things, at the same time).  Erlang is another language in this area.  Scala runs on the Java Virtual Machine and Common Language Runtime.  In April 2009 Twitter announced they had switched large portions of their backend from Ruby to Scala and intended to convert the rest.  In addition, Foursquare uses Scala and Lift (Lift is a framework for Scala much in the same way Rails is a framework for Ruby.)
  • R:  a programming language and software environment for statistical computing and graphics.
  • Node.js:  (aka “Node”) What’s interesting about Node.js is the idea that it is taking JavaScript which was originally designed to be used in web browsers and using it as a server-side environment.  It is intended for writing scalable network programs such as web servers.  It was created by Ryan Dahl in 2009, and its growth is sponsored by Joyent, which employs Dahl.
  • Clojure: A recent dialect of the Lisp programming language and is good for data intense applications.  It runs on the Java Virtual Machine and Common Language Runtime

Runtimes and Platforms

  • Common Language Runtime (CLR):  is the virtual machine component of Microsoft’s .NET framework and is responsible for managing the execution of .NET programs.
  • Java Virtual Machine (JVM) – the underlying execution engine that the Java language runs on-top of.  It controls access to the hardware, networks, and other “infrastructure” and services outside of the main application written in Java. Of special note is that many languages other than Java can run on the JVM (as with the CLR), e.g., Scala, Ruby, etc. There are many JVMs and ISVs (IBM, Oracle, etc.) will use their custom JVMs as key differentiators for middle ware, mostly around performance, scale-out, and security.

Projects/Entities

  • Openshift: Red Hat’s Platform as a Service (PaaS) offering.  More specifically, OpenShift is a PaaS software layer that Red Hat runs and manages on top of third party providers – Amazon first with more to follow.
  • Heroku:  A Platform as a Service (PaaS) offering that was acquired by Salesforce.com.  It supports development of Ruby on Rails, Java, PHP and Python.
  • CloudFoundry: A Platform as a Service (PaaS) offering and VMware-led project. Cloud Foundry provides a platform for building, deploying, and running cloud apps using the Spring Framework for Java developers, Rails and Sinatra for Ruby developers, Node.js and other JVM languages/frameworks including Groovy, Grails and Scala.
  • Joyent: Offers PaaS and IaaS capabilities through the public cloud.  Dell resells this capability as turnkey solution under the name The Dell Cloud Solution for Web applications.  Joyent also sponsors the development of node.js and employs its creator.
  • GitHub: a web-based hosting service for software development projects that use the Gitrevision control system. GitHub offers both commercial plans and free accounts for open source projects.

But wait there’s more…

Stay tuned for the next couple of entries when I will cover first the Database tier and then the Infrastructure tier.

Extra-credit reading

Pau for now…

4 Responses to Web Glossary part one: Application tier

  1. […] George (@barton808) published Web Glossary part one: Application tier on […]

    Like

  2. Rafael Knuth says:

    Here’s a great resource to get started with Ruby, a developer friend of mine recommended the site yesterday: http://railsforzombies.org/

    Like

  3. […] some of the software and solutions work they are doing. Barton George has also recently published a 3-part glossary on all things, web/cloud related. It’s a pretty easy read and for those entering this arena for the first time, a […]

    Like

Leave a comment