Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Getting Started with Java

32 views

Published on

An introductory presentation on the Java programming language including a review of object-oriented programming and the class mechanism.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Getting Started with Java

  1. 1. 1 Getting Started with Java Trenton Computer Festival March 17, 2018 Michael P. Redlich @mpredli about.me/mpredli/
  2. 2. 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
  3. 3. Objectives (1) • What is Java?? • Evolution of Java • Features of Java • Review of Object-Oriented Programming (OOP) 3
  4. 4. Objectives (2) • Getting Started with Java • introduction to the Java class mechanism • how to implement Java classes • Live Demos (yea!) • Java Resources 4
  5. 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. 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. 7. Evolution of Java (2) • 1994 - Project “*7” dissolved • but in the meantime... • 1995 - Java introduced at Sun World ’95 • HotJava browser 7
  8. 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. 9. OOP Review (1) • Programming Paradigm • Four (4) Main Attributes • data encapsulation • data abstraction • inheritance • polymorphism 9
  10. 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. 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. 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. 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. 14. Some Java Keywords • class • new • private, protected, public, package • try, throw, catch, finally • final • extends • implements • abstract • interface 14
  15. 15. Classes (1) • A user-defined abstract data type • Extension of C structs • Contain: • constructor • data members and member functions (methods) 15
  16. 16. Classes (2) • Dynamic object instantiation • Multiple Constructors: • Sports(); • Sports(String,int,int); • Sports(float,String,int); 16
  17. 17. Classes (3) • Abstract Classes • contain at least one pure virtual member function (C++) • contain at least one abstract method (Java) 17
  18. 18. Abstract Classes • Pure virtual member function (C++) • virtual void draw() = 0; • Abstract method (Java) • public abstract void draw(); 18
  19. 19. Class Inheritance 19
  20. 20. Hello,World! 20 source: http://www.codejava.net/java-core/how-to-write-compile-and-run-a-hello-world-java- program-for-beginners
  21. 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. 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. 23. Dynamic Instantiation • Object creation: • Baseball mets = new Baseball(“Mets”,97,65); • Access to public member functions: • mets.getWin(); // returns 97 23
  24. 24. Deleting Objects Baseball mets = new Baseball(“Mets”,97,65); // automatic garbage collection or: System.gc(); // explicit call 24
  25. 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. 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. 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. 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. 29. Working with Java (4) • Run the applet: • in browser via HTML file within <applet></ applet> tags • appletviewer path filename.html 29
  30. 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. 31. Directories and Packages (2) /usr/local/apps/java-apps ↳java-apps ↳tcf ↳hello ↳src ↳org ↳tcf ↳hello 31 package org.tcf.hello;➜
  32. 32. Demo Time… 32
  33. 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. 34. Java IDEs (2) • NetBeans 8.2 •netbeans.org • currently being moved from Oracle to Apache 34
  35. 35. 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
  36. 36. Local Java User Groups (2) • NYJavaSIG • facilitated by Frank Greco • javasig.com • PhillyJUG • facilitated by Martin Snyder, et. al. • meetup.com/PhillyJUG 36
  37. 37. Local Java User Groups (3) • Capital District Java Developers Network • facilitated by Dan Patsey • cdjdn.com • currently restructuring 37
  38. 38. Further Reading 38
  39. 39. 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. 40. 40 Thanks! mike@redlich.net @mpredli redlich.net slideshare.net/mpredli01 github.com/mpredli01
  41. 41. Upcoming Events • March 17-18, 2017 •tcf-nj.org • April 18-19, 2017 •phillyemergingtech.com 41

×