01-Fundamentals of JAVA
01-Fundamentals of JAVA
Lecture -01
Fundamentals of Java
KHALED KHAN
DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING
What is Java?
What is Java?
• Java is a class-based, general-purpose, object-oriented programming
language.
• Originally developed by James Gosling at Sun Microsystems (1995)
• Oracle acquired SUN Microsystems (2010)
• Java applications are typically compiled to bytecode:
• bytecodes run on any Java virtual machine (JVM) regardless of the
underlying computer architecture
• Syntax is similar to C and C++ with fewer low-level facilities than either
of them
• The latest version is Java 15 (Sept. 2020)
• Java 11 is the currently supported long-term support (LTS) version
• Very popular:
• Billions of devices, 10 million developers.
Principles of Java
• It must be simple, object-oriented, and familiar.
• It must be robust and secure.
• It must be architecture-neutral and portable.
• It must execute with high performance.
• It must be interpreted, threaded, and dynamic.
ApplicaQons of Java
• Mobile Applications
• Desktop GUI Applications
• Web-based Applications
• Web Servers and Application Servers
• Enterprise Applications
• Scientific Applications
• Gaming Applications
• Big Data Technologies
• Business Applications
• Cloud-based Applications
Java Versions
• The software you use to write Java programs is called the Java Developmen
Kit, or JDK.
• There are different editions of the JDK:
• Java SE - Java2 Standard Edition.
• Java EE - Java2 Enterprise Edition.
• Java ME - Java2 Micro Edition.
• Available for download at
http://java.oracle.com
Java Standard EdiQon
• Java Standard Edition contains the capabilities needed to develop
desktop and server applications.
• Prior to Java SE 8, Java supported three programming paradigms
• Procedural programming
• Object-oriented programming
• Generic programming
• Java SE 8 added the beginnings of functional programming with lambdas
and streams
Java Enterprise EdiQon
• Java is used in such a broad spectrum of applications that it has two
other editions.
• The Java Enterprise Edition (Java EE) is geared toward developing:
• large-scale applications
• distributed networking applications
• and web-based applications.
Java Micro EdiQon (Java ME)
• Subset of Java SE.
• Geared toward developing applications for resource-constrained embedded
devices, such as
• Smartwatches
• MP3 players
• television set-top boxes
• smart meters (for monitoring electric energy usage)
• and more.
• Many of the devices in use Java ME.
Java Development
A Typical Java Development Environment
• Normally there are five phases
1. edit
2. compile
3. load
4. verify
5. execute.
• Before you begin see LAB-1 on downloading and installing the JDK on Windows,
Linux and macOS
A Typical Java Development Environment
• Phase 1 Editing a file with an editor program
1. Using the editor, you type a Java program (source code).
2. Make any necessary corrections.
3. Save the program.
4. Java source code files are given a name ending with the .java
extension.
• Integrated development environments (IDEs) provide tools that support the
software development process.
• The most popular Java IDEs are:
• Eclipse (http://www.eclipse.org)
• IntelliJ IDEA (http://www.jetbrains.com)
• NetBeans (http://www.netbeans.org)
A Typical Java Development Environment
A Typical Java Development Environment
• Phase 2: Compiling a Java Program into Bytecodes
• Use the command javac (the Java compiler) to compile a program. For
example, to compile a program called Welcome.java, you’d type
javac Welcome.java
• If the program compiles, the compiler produces a .class file called
Welcome.class that contains the compiled version.
A Typical Java Development Environment
• Bytecodes?
• Java compiler translates Java source code into bytecodes
• Bytecode instructions are platform independent
• The Java Virtual Machine (JVM)—a part of the JDK and the foundation of
the Java platform—executes bytecodes.
• Virtual machine (VM)—a software application that simulates a computer
• Hides the underlying operating system and hardware from the programs
that interact with it.
• The JVM is invoked by the java command. For example, to execute a Java
application called Welcome, you’d type the command
java Welcome
A Typical Java Development Environment
• Phase 3: Loading a Program into Memory
• The JVM places the program in memory to execute it—this is known as
loading.
• Class loader takes the .class files containing the program’s
bytecodes and transfers them to primary memory. Also loads any of
the .class files provided by Java that your program uses.
• The .class files can be loaded from a disk on your system or over a
network.
A Typical Java Development Environment
• Phase 3: Loading a Program into Memory
A Typical Java Development Environment
• Phase 4: Bytecode Verification
• The bytecode verifier examines their bytecodes ensuring that they’re
valid and do not violate Java’s security restrictions.
• Java enforces strong security to make sure that programs do not damage
your files or your system (as computer viruses and worms might).
A Typical Java Development Environment
• Phase 5: Execution
• JVMs typically execute bytecodes using a combination of interpretation
and so-called just-in-time (JIT) compilation. Analyzes the bytecodes as
they’re interpreted
• A just-in-time (JIT) compiler—such as Oracle’s Java HotSpot™ compiler—
translates the bytecodes into the underlying computer’s machine
language.
• Java programs go through two compilation phases
• One in which source code is translated into bytecodes (for
portability across JVMs on different computer platforms) and
• A second in which, during execution, the bytecodes are translated
into machine language for the actual computer on which the program
executes.
A Typical Java Development Environment
• Phase 5: Execution
Program Development Process
Saves Java statements
Text editor Source code
(.java)
r ead by
Is
ted by
ter p re
Is in
Java Results in Program
Virtual Execution
Machine
Java Portability
Portability in Java
• Portable means that a program may be written on one type of computer
and then run on a wide variety of computers, with little or no
modification.
• Java byte code runs on the JVM and not on any particular CPU;
therefore, compiled Java programs are highly portable.
• JVMs exist on many platforms:
• Windows, Mac, Linux, UNIX, …etc.
Byte code
(.class)
- The END -