14
Tutorial: Intro to Java Getting started. 1 CS 349 - Java tutorial

Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

  • Upload
    others

  • View
    16

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Tutorial: Intro to Java

Getting started.

1 CS 349 - Java tutorial

Page 2: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Back

gro

un

d • Designed by James Gosling

• Released by Sun Microsystems in 1995.

– Originally a proprietary license, but made open source

under GNU GPL in 2007.

– Sun and Java acquired by Oracle in 2010.

• General-purpose, portable language.

– Cross-platform, and able to scale from small devices to

large applications.

– Dynamic, interpreted*

• Broadly adopted, and extremely successful.

– Java is currently (2017) TIOBE's most popular

Programming Language!

(https://www.tiobe.com/tiobe-index/)

2 CS 349 - Java tutorial

Page 3: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

3 CS 349 - Java tutorial

Page 4: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Ob

ject

Ori

en

ted • C++ syntax

– Meant to be familiar to legions of C++

developers that would migrate to Java.

• Class-based, object-oriented design.

– Explicitly object-oriented

– Cannot build procedural applications!

• Extensive class libraries included

– Cross-platform!

– Support for everything from threading to

database access to building user interfaces.

– This makes Java unique; many languages rely

on third-party libraries.

4 CS 349 - Java tutorial

Page 5: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Ja

va

Vir

tual M

ach

ine (

JV

M)

• Portability is achieved through virtualization

– Java compiles to bytecode (IR).

– Bytecode is executed

by a Java virtual

machine (JVM) on the

target platform.

– Interpreted bytecode is

slower than native code

BUT just-in-time

compilation can give

near-native

performance.

http://viralpatel.net/blogs/java-virtual-machine-an-inside-story/

5 CS 349 - Java tutorial

Page 6: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Garb

ag

e C

ollec

tio

n (

GC

)• In Java, there’s no need to free memory

– Garbage collection runs periodically and frees

up memory that’s not in use.

– JVM attempts to do this without impacting

performance.

http://www.ibm.com/developerworks/library/j-jtp10283/6 CS 349 - Java tutorial

Page 7: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Ja

va

Pla

tfo

rm (

JD

K)

• Includes tools, and libraries - everything from

threading, to database access, to UI toolkits – all

cross platform and portable.

7 CS 349 - Java tutorial

Page 8: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Insta

llin

g t

he P

latf

orm • There are two main Java implementations

– Oracle Java: https://docs.oracle.com/javase/8/

– Open JDK: FOSS implementation for Linux.

• JRE: standalone JVM installation (runtime).

• JDK: JRE plus development tools and libraries.

– This gives you command-line tools (javac

compiler and java runtime).

• Third-party support is excellent

– Editor support in VIM, Sublime, etc.

– IDEs like IntelliJ, Eclipse.

8 CS 349 - Java tutorial

Page 9: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Bu

ild

ing

Ap

plic

ati

on

s • Source code is written in text files ending with

the .java extension (one class per source file).

• Source files are compiled into .class files

(bytecode) by the javac compiler.

• Class files (.class) can be executed on any

platform with an appropriate JVM.

• Often applications include many class files,

which we bundle into a JAR (.jar) file (basically a

zip file with metadata).

9 CS 349 - Java tutorial

Page 10: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Str

uctu

re o

f a P

rog

ram

10

Bicycle.java

CS 349 - Java tutorial

public class Bicycle {private String owner = null;private int speed = 0;private int gear = 1;

// constructorpublic Bicycle() { }public Bicycle(String name) { this.owner = name; }

// methodspublic void changeSpeed(int newSp) { this.speed = newSp; }public void changeGear(int newGear) { this.gear = newGear; }public int getSpeed() { return this.speed; }public int getGear() { return this.gear; }

// static entry point – main methodpublic static void main(String[] args) {

Bicycle adultBike = new Bicycle("Jeff");adultBike.changeSpeed(20);System.out.println("speed=" + adultBike.getSpeed());

Bicycle kidsBike = new Bicycle("Austin");kidsBike.changeSpeed(15);System.out.println("speed=" + kidsBike.getSpeed());

}}

Page 11: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Co

mm

an

d-L

ine T

oo

ls To compile on the command line:

$ javac CountArgsApp.java

To run compiled app:

$ java CountArgsApp one two three

You provided 3 args.

11

This works when you have a single source

file, but starts to fall apart when you have

multiple files and dependencies (files that

depend on one another).

CS 349 - Java tutorial

Page 12: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Ap

ach

e A

nt

• An open-source build tool for Java applications

• Installation and manual:

http://ant.apache.org/manual/index.html

• Build projects are specified in build.xml

• Think of it as a “makefile for Java”

CS 349 - Java tutorial12

Page 13: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Exam

ple

An

t b

uild

.xm

l <project name="CS349-A0" default="run" basedir=".">

<target name="compile" description="compile the source">

<javac srcdir="." destdir="."/>

</target>

<target name="run" depends="compile" description="run program">

<java classname="Check" classpath="."/>

</target>

<target name="clean" description="clean up">

<delete file="Check.class"/>

<delete file="results.txt"/>

</target>

</project>

Using Ant:

ant # run default target (‘run’)

ant compile # run ‘compile’ target

ant clean # run ‘clean’ target

13

targettask

CS 349 - Java tutorial

task

Page 14: Tutorial: Intro to Java - University of Waterloocs349/s17/slides/3-2-java_tutorial.pdf · 2 CS 349 - Java tutorial. 3 CS 349 - Java tutorial . ed •C++ syntax– Meant to be familiar

Reco

mm

en

ded

Reso

urc

es • Required

– Java SE 8 JDK :

http://www.oracle.com/technetwork/java/javase/

• Reference

– Java 8 SE Platform SDK Documentation: https://docs.oracle.com/javase/8/docs/api/overview-summary.html

– Java 8 Tutorials:

http://docs.oracle.com/javase/tutorial/java/index.html

– Apache Ant: http://ant.apache.org/manual/index.html

• IDE

– IntelliJ (Jetbrains Student Licenses):

https://www.jetbrains.com/student/

14 CS 349 - Java tutorial