1
Getting Started with
Java
Trenton Computer Festival
March 17, 2018
Michael P. Redlich
@mpredli
about.me/mpredli/
Who’s Mike?
• BS in CS from
• “Petrochemical Research Organization”
• Java Queue News Editor, InfoQ
• Ai-Logix, Inc. (now AudioCodes)
• Amateur Computer Group of New Jersey
2
Objectives (1)
• What is Java??
• Evolution of Java
• Features of Java
• Review of Object-Oriented Programming
(OOP)
3
Objectives (2)
• Getting Started with Java
• introduction to the Java class mechanism
• how to implement Java classes
• Live Demos (yea!)
• Java Resources
4
What is Java?
• “Java is C++ without guns, knives, and clubs.”
James Gosling,“father” of Java, Sun Microsystems
• “Java is simple, object-oriented, distributed,
interpreted, robust, secure, architecture neutral,
portable, high performance, multithreaded
dynamic language.”
Sun Microsystems
5
Evolution of Java (1)
• Created by James Gosling (with Patrick
Naughton)
• Sun Microsystems
• 1991 - originally named “Oak”
• consumer applications
• architecture agnostic
• object-oriented
6
Evolution of Java (2)
• 1994 - Project “*7” dissolved
• but in the meantime...
• 1995 - Java introduced at Sun World ’95
• HotJava browser
7
Features of Java
• Object-Oriented
Programming (OOP)
Language
• Documentation
Generation
• Applets and Applications
• Comprehensive
Exception Handling
• Java Database
Connectivity (JDBC)
• Java Beans
• Enterprise Java Beans
• No pointers!!
8
OOP Review (1)
• Programming Paradigm
• Four (4) Main Attributes
• data encapsulation
• data abstraction
• inheritance
• polymorphism
9
OOP Review (2)
• Abstract Data Type (ADT)
• user-defined data type
• use of objects through functions (methods)
without knowing the internal representation
10
OOP Review (3)
• Interface
• functions (methods) provided in the ADT that
allow access to data
• Implementation
• underlying data structure(s) and business logic
within the ADT
11
OOP Review (4)
• Class
• Defines a model
• Declares attributes
• Declares behavior
• Is an ADT
• Object
• Is an instance of a class
• Has state
• Has behavior
• May have many unique
objects of the same class
12
Advantages of OOP
• Interface can (and should) remain
unchanged when improving implementation
• Encourages modularity in application
development
• Better maintainability of code
• Code reuse
• Emphasis on what, not how
13
Some Java Keywords
• class
• new
• private,
protected, public,
package
• try, throw, catch,
finally
• final
• extends
• implements
• abstract
• interface
14
Classes (1)
• A user-defined abstract data type
• Extension of C structs
• Contain:
• constructor
• data members and member functions (methods)
15
Classes (2)
• Dynamic object instantiation
• Multiple Constructors:
• Sports();
• Sports(String,int,int);
• Sports(float,String,int);
16
Classes (3)
• Abstract Classes
• contain at least one pure virtual member
function (C++)
• contain at least one abstract method (Java)
17
Abstract Classes
• Pure virtual member function (C++)
• virtual void draw() = 0;
• Abstract method (Java)
• public abstract void draw();
18
Class Inheritance
19
Hello,World!
20
source: http://www.codejava.net/java-core/how-to-write-compile-and-run-a-hello-world-java-
program-for-beginners
21
// Sports class (partial listing)
public class Sports {
private String team;
private int win;
public Sports() {
// define default constructor here...
}
public Sports(String team,int win,int loss) {
// define primary constructor here...
}
public int getWin() {
return win;
}
}
22
// Baseball class (partial listing)
class Baseball extends Sports {
public Baseball() {
// define default constructor here...
}
Baseball(String team,int win,int loss) {
// define primary constructor here...
}
}
Dynamic Instantiation
• Object creation:
• Baseball mets = new
Baseball(“Mets”,97,65);
• Access to public member functions:
• mets.getWin(); // returns 97
23
Deleting Objects
Baseball mets = new
Baseball(“Mets”,97,65);
// automatic garbage collection or:
System.gc(); // explicit call
24
Java Development Kit
(JDK)
• Available from Oracle web site
• java.sun.com
• Java SE (standard edition)
• latest version - Java 9.0.4
• Java 10 available on March 20, 2018
• Documentation in full HTML format
25
Working with Java (1)
• Setup environment and path:
• set JAVA_HOME=path
• set PATH=%PATH%;%JAVA_HOME%bin
• export JAVA_HOME=path
• export PATH=$JAVA_HOME/bin
26
Working with Java (2)
• Source code
• .java extension
• Intermediate bytecode
• .class extension generated after successful
compilation
• Bytecode interprested by JavaVirtual
Machine (JVM)
27
Working with Java (3)
• Compile Java source code:
• javac -Xlint:all -d path
filename.java
• Run the application:
• java -classpath path filename
28
Working with Java (4)
• Run the applet:
• in browser via HTML file within <applet></
applet> tags
• appletviewer path filename.html
29
Directories and
Packages (2)
• Consistent directory structure
• source code (*.java)
• byte code (*.class)
• Map directories with package name
• under the src folder
30
Directories and
Packages (2)
/usr/local/apps/java-apps
↳java-apps
↳tcf
↳hello
↳src
↳org
↳tcf
↳hello
31
package org.tcf.hello;➜
Demo Time…
32
Java IDEs (1)
• IntelliJ IDEA 2017.3
•jetbrains.com/idea
• stay tuned for version 2018.1 coming soon
• Eclipse IDE
•eclipse.org/ide
33
Java IDEs (2)
• NetBeans 8.2
•netbeans.org
• currently being moved from Oracle to Apache
34
Local Java User Groups
(1)
• ACGNJ Java Users Group
• facilitated by Mike Redlich
• javasig.org
• Princeton Java Users Group
• facilitated byYakov Fain
• meetup.com/NJFlex
35
Local Java User Groups
(2)
• NYJavaSIG
• facilitated by Frank Greco
• javasig.com
• PhillyJUG
• facilitated by Martin Snyder, et. al.
• meetup.com/PhillyJUG
36
Local Java User Groups
(3)
• Capital District Java Developers Network
• facilitated by Dan Patsey
• cdjdn.com
• currently restructuring
37
Further Reading
38
Upcoming Events
• ACGNJ Java Users Group
• Dr. Venkat Subramaniam
• Monday, March 19, 2018
• DorothyYoung Center for the Arts, Room 106
• Drew University
• 7:30-9:00pm
• “Twelve Ways to Make Code Suck Less”
39
40
Thanks!
mike@redlich.net
@mpredli
redlich.net
slideshare.net/mpredli01
github.com/mpredli01
Upcoming Events
• March 17-18, 2017
•tcf-nj.org
• April 18-19, 2017
•phillyemergingtech.com
41

Getting Started with Java

  • 1.
    1 Getting Started with Java TrentonComputer Festival March 17, 2018 Michael P. Redlich @mpredli about.me/mpredli/
  • 2.
    Who’s Mike? • BSin CS from • “Petrochemical Research Organization” • Java Queue News Editor, InfoQ • Ai-Logix, Inc. (now AudioCodes) • Amateur Computer Group of New Jersey 2
  • 3.
    Objectives (1) • Whatis Java?? • Evolution of Java • Features of Java • Review of Object-Oriented Programming (OOP) 3
  • 4.
    Objectives (2) • GettingStarted with Java • introduction to the Java class mechanism • how to implement Java classes • Live Demos (yea!) • Java Resources 4
  • 5.
    What is Java? •“Java is C++ without guns, knives, and clubs.” James Gosling,“father” of Java, Sun Microsystems • “Java is simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high performance, multithreaded dynamic language.” Sun Microsystems 5
  • 6.
    Evolution of Java(1) • Created by James Gosling (with Patrick Naughton) • Sun Microsystems • 1991 - originally named “Oak” • consumer applications • architecture agnostic • object-oriented 6
  • 7.
    Evolution of Java(2) • 1994 - Project “*7” dissolved • but in the meantime... • 1995 - Java introduced at Sun World ’95 • HotJava browser 7
  • 8.
    Features of Java •Object-Oriented Programming (OOP) Language • Documentation Generation • Applets and Applications • Comprehensive Exception Handling • Java Database Connectivity (JDBC) • Java Beans • Enterprise Java Beans • No pointers!! 8
  • 9.
    OOP Review (1) •Programming Paradigm • Four (4) Main Attributes • data encapsulation • data abstraction • inheritance • polymorphism 9
  • 10.
    OOP Review (2) •Abstract Data Type (ADT) • user-defined data type • use of objects through functions (methods) without knowing the internal representation 10
  • 11.
    OOP Review (3) •Interface • functions (methods) provided in the ADT that allow access to data • Implementation • underlying data structure(s) and business logic within the ADT 11
  • 12.
    OOP Review (4) •Class • Defines a model • Declares attributes • Declares behavior • Is an ADT • Object • Is an instance of a class • Has state • Has behavior • May have many unique objects of the same class 12
  • 13.
    Advantages of OOP •Interface can (and should) remain unchanged when improving implementation • Encourages modularity in application development • Better maintainability of code • Code reuse • Emphasis on what, not how 13
  • 14.
    Some Java Keywords •class • new • private, protected, public, package • try, throw, catch, finally • final • extends • implements • abstract • interface 14
  • 15.
    Classes (1) • Auser-defined abstract data type • Extension of C structs • Contain: • constructor • data members and member functions (methods) 15
  • 16.
    Classes (2) • Dynamicobject instantiation • Multiple Constructors: • Sports(); • Sports(String,int,int); • Sports(float,String,int); 16
  • 17.
    Classes (3) • AbstractClasses • contain at least one pure virtual member function (C++) • contain at least one abstract method (Java) 17
  • 18.
    Abstract Classes • Purevirtual member function (C++) • virtual void draw() = 0; • Abstract method (Java) • public abstract void draw(); 18
  • 19.
  • 20.
  • 21.
    21 // Sports class(partial listing) public class Sports { private String team; private int win; public Sports() { // define default constructor here... } public Sports(String team,int win,int loss) { // define primary constructor here... } public int getWin() { return win; } }
  • 22.
    22 // Baseball class(partial listing) class Baseball extends Sports { public Baseball() { // define default constructor here... } Baseball(String team,int win,int loss) { // define primary constructor here... } }
  • 23.
    Dynamic Instantiation • Objectcreation: • Baseball mets = new Baseball(“Mets”,97,65); • Access to public member functions: • mets.getWin(); // returns 97 23
  • 24.
    Deleting Objects Baseball mets= new Baseball(“Mets”,97,65); // automatic garbage collection or: System.gc(); // explicit call 24
  • 25.
    Java Development Kit (JDK) •Available from Oracle web site • java.sun.com • Java SE (standard edition) • latest version - Java 9.0.4 • Java 10 available on March 20, 2018 • Documentation in full HTML format 25
  • 26.
    Working with Java(1) • Setup environment and path: • set JAVA_HOME=path • set PATH=%PATH%;%JAVA_HOME%bin • export JAVA_HOME=path • export PATH=$JAVA_HOME/bin 26
  • 27.
    Working with Java(2) • Source code • .java extension • Intermediate bytecode • .class extension generated after successful compilation • Bytecode interprested by JavaVirtual Machine (JVM) 27
  • 28.
    Working with Java(3) • Compile Java source code: • javac -Xlint:all -d path filename.java • Run the application: • java -classpath path filename 28
  • 29.
    Working with Java(4) • Run the applet: • in browser via HTML file within <applet></ applet> tags • appletviewer path filename.html 29
  • 30.
    Directories and Packages (2) •Consistent directory structure • source code (*.java) • byte code (*.class) • Map directories with package name • under the src folder 30
  • 31.
  • 32.
  • 33.
    Java IDEs (1) •IntelliJ IDEA 2017.3 •jetbrains.com/idea • stay tuned for version 2018.1 coming soon • Eclipse IDE •eclipse.org/ide 33
  • 34.
    Java IDEs (2) •NetBeans 8.2 •netbeans.org • currently being moved from Oracle to Apache 34
  • 35.
    Local Java UserGroups (1) • ACGNJ Java Users Group • facilitated by Mike Redlich • javasig.org • Princeton Java Users Group • facilitated byYakov Fain • meetup.com/NJFlex 35
  • 36.
    Local Java UserGroups (2) • NYJavaSIG • facilitated by Frank Greco • javasig.com • PhillyJUG • facilitated by Martin Snyder, et. al. • meetup.com/PhillyJUG 36
  • 37.
    Local Java UserGroups (3) • Capital District Java Developers Network • facilitated by Dan Patsey • cdjdn.com • currently restructuring 37
  • 38.
  • 39.
    Upcoming Events • ACGNJJava Users Group • Dr. Venkat Subramaniam • Monday, March 19, 2018 • DorothyYoung Center for the Arts, Room 106 • Drew University • 7:30-9:00pm • “Twelve Ways to Make Code Suck Less” 39
  • 40.
  • 41.
    Upcoming Events • March17-18, 2017 •tcf-nj.org • April 18-19, 2017 •phillyemergingtech.com 41