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

J01-JavaEnvironment

Uploaded by

yesshakez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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
We take content rights seriously. If you suspect this is your content, claim it here.
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