Java Fundamentals Tutorial

ProTech's Java Fundamentals Tutorial

Aleksandar Gargenta

1. Overview of Java

Introduction to Java Development

1.1. History of Java


Stealth Project for consumer electronics market (later Green Project)

Language called Oak then renamed to Java


First Person Project for set-top boxes


LiveOak Project for new OS

HotJava Web Browser


Sun formally announces Java at SunWorld

Netscape incorporates support for Java – Internet Explorer add support for Java


JDK 1.0 Basic support for AWT


JDK 1.1 JavaBeans, RMI, AWT, JDBC, servlets, JNDI, JFC, EJB


Java 1.2 Reflection, Swing, Java Collections Framework, plug-in, IDL

Becomes known as Java 2, Port to Linux, Java Community Process


Jini, PersonalJava, Java 2 Source Code, XML support, JavaServer Pages, Java Editions (J2ME, J2SE, J2EE)


J2SE 1.3 HotSpot, RMI/CORBA, JavaSound, JNDI , JPDA


Java Connector Architecture, patterns catalog, Java Web Start 1.0, J2EE 1.3


J2SE 1.4 assert, regular expressions, exception chaining, NIO, logging, image I/O, integrated XML/XSLT, integrated Web Start, integrated JCE, JSSE, JAAS, J2EE 1.4 beta (Web Services)


J2SE 1.5 (Java 5) Generics, auto-boxing, metadata (annotations), enums, “for-each”


Java 10th Anniversary


Java 1.6 (Java 6)

1.2. What is Java?

Java Technology consists of:

  • Java Language
  • Java Platform
  • Java Tools

Figure 1. Java technology


Java language is a general-purpose programming language. It can be used to develop software for mobile devices, browser-run applets, games, as well as desktop, enterprise (server-side), and scientific applications.

Java platform consists of Java virtual machine (JVM) responsible for hardware abstraction, and a set of libraries that gives Java a rich foundation.

Java tools include the Java compiler as well as various other helper applications that are used for day-to-day development (e.g. debugger).

1.3. Why Java?

  • Object oriented
  • Interpreted
  • Portable
  • Simple yet feature-full
  • Secure and robust
  • Scalable
  • High-performance multi-threaded
  • Dynamic
  • Distributed

Object Oriented
Everything in Java is coded using OO principles. This facilitates code modularization, reusability, testability, and performance.
Java source is complied into platform-independent bytecode, which is then interpreted (compiled into native-code) at runtime. Java’s slogan is "Write Once, Run Everywhere"
Java has a familiar syntax, automatic memory management, exception handling, single inheritance, standardized documentation, and a very rich set of libraries (no need to reinvent the wheel).
Due to its support for strong type checking, exception handling, and memory management, Java is immune to buffer- overruns, leaked memory, illegal data access. Additionally, Java comes with a Security Manager that provides a sand-box execution model.
Thanks to its overall design, Java is scalable both in terms of performance/throughput, and as a development environment. A single user can play a Java game on a mobile phone, or millions of users can shop though a Java-based e-commerce enterprise application.
With its HotSpot Just-in-Time compiler, Java can achieve (or exceed) performance of native applications. Java supports multi-threaded development out-of-the-box.
Java can load application components at run-time even if it knows nothing about them. Each class has a run-time representation.
Java comes with support for networking, as well as for invoking methods on remote (distributed) objects through RMI.

1.4. Java After 15 years

  • 6.5+ million software developers
  • 1.1+ billion desktops with Java installed
  • 3+ billion mobile devices with support for Java
  • Embedded devices based on Java: set-top boxes, printers, web cams, games, car navigation systems, lottery terminals, medical devices, parking payment stations, etc.