0% found this document useful (0 votes)
4 views

J01-JavaEnvironment

Uploaded by

yesshakez
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

J01-JavaEnvironment

Uploaded by

yesshakez
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 31

The Java Environment

Object Oriented Programming

Version 3.3.1
© Maurizio Morisio, Marco Torchiano, 2023
Java Timeline
§ 1991: develops a programming
language for cable TV set-top boxes
w Simple, OO, platform independent
§ 1994: Java-based web browser
(HotJava),
w The idea of “applet” appears
§ 1996: first version of Java (1.0)

See also: http://oracle.com.edgesuite.net/timeline/java/


https://docs.oracle.com/en/java/javase/20/language/java-language-changes.html
Java timeline (cont’d)
§ 1996: Netscape supports Java
w Java 1.02 released,
§ 1997: Java 1.1 released, major leap
over for the language
§ 1998: Java 2 platform (v. 1.2) released
(libraries)
§ 2000: J2SE 1.3 (platform
enhancements, HotSpot)
Java timeline (cont’d)
§ 2002: J2SE 1.4 (several new APIs), e.g.
w XML
w Logging
§ 2005: J2SE 5.0 (Language enhancements)
w Generics
§ 2006: Java SE 6 (Faster Graphics),
w goes open source
§ 2010: Acquisition by
§ 2011: Java SE 7 (I/O improvements)
Java timeline (cont’d)
§ 2014: Java SE 8 (Lang evolution, LTS)
w Lambda expressions
w Functional paradigm
§ 2017: Java 9 released Start 6-month
w Modularization (Jigsaw), release plan
w jshell (REPL)
§ 2018: Java 10, Java 11 (LTS)
w Local var type inference
§ 2019: Java 12, Java 13
w Switch expressions (preview)
w Text blocks
Java timeline (cont’d)
§ 2020: Java 14, Java 15
w Text blocks
§ 2021: Java 16, Java 17 (LTS)
w Records
w Jpackage
§ 2022/23: Java 18, Java 19, Java 20
w Simple web server
w Virtual threads
§ Latest release Java 21(LTS): Sept. 23
OO language features
§ OO language provides constructs to:
w Define classes (types) in a hierarchic way
(inheritance)
w Create/destroy objects dynamically
w Send messages (w/ dynamic binding)
§ No procedural constructs (pure OO
language)
w no functions, class methods only
w no global vars, class attributes only

9
Java features
§ Platform independence (portability)
w Write once, run everywhere
w Translated to intermediate language
(bytecode)
w Interpreted (with optimizations, i.e. JIT)
§ High dynamicity
w Run time loading and linking
w Dynamic array sizes
Java features (cont’d)
§ Robust language, less error prone
w Strong type model and no explicit
pointers
– Compile-time checks
w Run-time checks
– No array overflow
w Garbage collection
– No memory leaks
w Exceptions as a pervasive mechanism to
check errors

11
Java features (cont’d)
§ Shares many syntax elements w/ C++
w Learning curve is less steep for C/C++
programmers
§ Quasi-pure OO language
w Only classes and objects (no functions,
pointers, and so on)
w Basic types deviates from pure OO...
§ Easy to use

12
Java features (cont’d)
§ Supports “programming in the large”
w JavaDoc
w Class libraries (Packages)
§ Lots of standard utilities included
w Concurrency (thread)
w Graphics (GUI) (library)
w Network programming (library)
– socket, RMI
– applet (client side programming)

13
Java features - Classes
§ There is only one first level concept:
the class
public class First {
}
§ The source code of a class sits in a
.java file having the same name
w Rule: one file per class
w Enforced automatically by IDEs
w Case-wise name correspondence

14
Java features - Methods
§ In Java there are no functions, but only
methods within classes
§ The execution of a Java program starts
from a special method:
public static void main(String[] args)

§ Note In C: int main(int argc, char* argv[])

w return type is void


w args[0] is the first argument on the
command line (after the program name)
Build and run

First.java Output

javac First.java
Java
Virtual Machine
Java compiler

First.class
java First
bytecode
Note: no extension
Cafe Babe
§ Magic number
w Specific initial sequence of a file that let
identify the type of the file
w E.g. PDF files starts with chars “%PDF”
§ Java class files starts with the
following 4 bytes:
0xCAFEBABE
Java Ecosystem
§ Java language
§ Java platform
w JVM
w Class libraries (API)
w SDK
Dynamic class loading
§ JVM loading is based on the classpath:
w locations whence classes can be loaded
§ When class X is required:
w For each location in the classpath:
– Look for file X.class
– If present load the class
– Otherwise move to next location
Example: source code
File: First.java:
public class First {
public static void main(String[] args){
int a;
a = 3;
System.out.println(a);
}
}
Example: execution Name of the class

§ Command: java First


w Take the name of the class (First)
w Look for the bytecode for that class
– In the classpath (and ‘.’ eventually)
w Load the class’s bytecode
– An perform all due initializations
w Look for the main() method
w Start execution from the main() method
Types of Java programs
§ Application
w It’s a common program, similarly to C
executable programs
w Runs through the Java interpreter (java)
of the installed Java Virtual Machine
public class HelloWorld {
public static void main(String args[]){
System.out.println(“Hello world!”);
}
}

23
Types of Java programs
Deprecated since Java 9
§ Applet (client browser)
w Java code dynamically downloaded
w Execution is limited by “sandbox”
§ Servlet (web server)
w In J2EE (Java 2 Enterprise Edition)
§ Midlet (mobile devices)
w In J2ME (Java 2 Micro Edition)
§ Android App (Android device)
w Java

24
Java development environment
§ Java SE 17
(http://www.oracle.com/technetwork/java/javase)
w javac compiler
w jdb debugger
w JRE (Java Run Time Environment)
– JVM
– Native packages (awt, swing, system, etc)
§ Docs
w http://docs.oracle.com/javase/8/
§ Visual Studio Code + Java Extension Pack
w https://code.visualstudio.com
w Integrated development environment (IDE)

25
Coding conventions
§ Use camelBackCapitalization for
compound names, not underscore
§ Class name must be Capitalized
§ Method names, object instance names,
attributes, method variables must all
start in lowercase
§ Constants must be all uppercases (w/
underscore)
§ Indent properly

26
Coding conventions (example)
class ClassName {

final static double PI = 3.14;

private int attributeName;

public void methodName {


int var;
if ( var==0 ) {
}
}
}

27
Deployment - Jar
§ Java programs are packaged and
deployed in jar files.
§ Jar files are compressed archives
w Like zip files
w Contain additional meta-information
§ It is possible to directly execute the
contents of a jar file from a JVM
w JVM can load classes from within a JAR
Jar command
§ A jar file can be created using:
jar cvf my.jar *.class
§ The contents can be seen with:
jar tf my.jar
§ To run a class included in a jar:
java -cp my.jar First
w The “-cp my.jar” option adds the jar to
the JVM classpath
Jar Main class
§ When a main class for a jar is defined,
it can executed simply by:
java -jar my.jar
§ To define a main class, a manifest file
must be added to the jar with:
jar cvfm my.jar manifest.txt

Main-Class: First
FAQ
§ Which is more “powerful”: Java or C?
w Performance: C is better though non that
much better (JIT)
w Ease of use: Java
w Error containment: Java
§ How can I generate an “.exe” file?
w You cannot. Use an installed JVM to
execute the program
w GCJ: http://gcc.gnu.org/java/
FAQ
§ I downloaded Java on my PC but I
cannot compile Java programs:
w Check you downloaded Java SDK
(including the compiler) not Java RTE or
JRE (just the JVM)
w Check the path includes pathToJava/bin
§ Note: Eclipse uses a different compiler
than javac
FAQ
§ Java cannot find a class
(ClassNotFoundException)
w The name of the class must not include
the extension .class:
– Es. java First
w Check you are in the right place in your
file system
– java looks for classes starting from the
current working directory
Wrap-up
§ Java is a quasi-pure OO language
§ Java is interpreted
§ Java is robust (no explicit pointers,
static/dynamic checks, garbage collection)
§ Java provides many utilities (data types,
threads, networking, graphics)
§ Java can used for different types of
programs
§ Coding conventions are not “just aesthetic”

34

You might also like