Table of Contents

~~SLIDESHOW~~

Introducing the Java Platform and the Module

Introducing the Java Platform

Design Goals for Java

What Java Isn’t

Simply “Saying Java is simpler than C++ is like saying K2 is shorter than Everest” Larry O’Brien.

The Java Platform

The Java SE 6 Platform at a Glance


Image Source: http://java.sun.com/javase/6/docs/index.html.

The Java Virtual Machine

The JVM


The Java Platform consists of the Java Virtual Machine which is a run-time system that has been ported to a number of platforms. The JVM interfaces with the platform operating systems services providing access to native file system, the network and the screen for graphical user interfaces. It executes byte-codes which are compiled class files.

The Java APIs

Java APIs

Built on top of the JVM is a very large and comprehensive set of library files (the Java Runtime Environment) that are available on all platforms that Java runs on. These provide the Java APIs.

Included in the platform are deployment facilities which enable Java applications to be delivered as applets, applications or on-demand via Java Web Start and above these are the development tools which make up the Java Development Kit (compilers, RMI compilers, etc) and on top, sits the Java programming language; which is actually a very small part of the platform.

Java the Platform

Other languages


In the last few years, Java the language has been joined by many other possibilities. Some of these are other languages such as Python and Ruby that have been ported to the Java platform (as Jython and JRuby). Others are new languages such as Clojure a language for programming multi-threaded applications; Scala a multi-paradigm programming language for the JVM; Rhino a JavaScript implementation targeted particular at server-side applications, and JavaFX, a new language for client-side applications.

Many of these languages are so-called dynamic languages. Others are compiled like Java is. However, all execute as JVM bytecode and all have full access to the Java Platform APIs, which also means that they are portable and support the write-once run-anywhere feature that is Java's principle value proposition.

Lecture Content

Internal Link

What is Groovy?

The Groovy language


Of particular interest to us is the dynamic language Groovy, which is compatible with Java (with a couple of exceptions, a Java Program is a Groovy Program) It differs in that it has a more relaxed syntax, it is dynamically typed, it has key APIs (lists, maps, ranges and regular expressions) as literal values and it supports closures.

These make Groovy a higher-level language but also a more productive language. And important for us, an easier language to learn than Java.

The GDK, exploits many of its higher-level features to enhance many key Java APIs, such as Strings, collections, threads, IO and exceptions, and make them even easier to use. It also introduces new features such as builders that make the manipulation of tree-like structures such as XML files, SQL queries and Swing user interfaces easier to construct and manipulate.

Why Groovy?

Groovy is a very easy language to pick up if you are already a Java programmer … but it's also easier to learn if you're an unexperienced programmer.


Source: Groovy frequently asked questions.

The Java Ecosystem

The Java Ecosystem


Java is a very large ecosystem. As well as the Java Platform Standard Edition there is a reduced capability version called Java Mobile Edition (Java ME) which is used in appliances (Personal Video Recorders, BlueRay players, PDAs, mobile phones); the Enterprise Edition which adds many features required for enterprise computing and a rich ecosystem of third party (often open source) APIs. All these APIs are programmable in Java and any of the other languages that can produce Java byte codes for the JVM. This makes Java a very capable and productive platform, which is usable within the very smallest embedded device right up to large enterprise computing applications.

Lecture Content

Software Design Patterns

Lecture Content

Client-Server Architectures

Examples of Architectures

Single-tier systems

A single-tier system

Two-tier systems

A two-tier architecture

Three-tier systems

A three-tier architecture

Three-Tier System: With Web Tier

Web tier

Multi-Tier System

Multi-tier architecture

Multi-Tier Java EE

Multi-tier Java EE

Peer-to-Peer System

P2P system

Lecture Content

Module Plan

Calendar on the Blackboard site.

Co & Pre-Requisites and Other Notes


Home | Previous Lecture | Lectures | Next Lecture