1 / 60

Advanced Java Programming

Advanced Java Programming Adam Gerber, PhD, SCJP gerber@cs.uchicago.edu office: Ryerson CS Lab 4 th Floor office hrs: 3:30-5:30pm Wed. Android Portfolio : http://www.flickr.com/photos/89831807@N02/show/. Survey of the class

arnav
Download Presentation

Advanced Java Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Advanced Java Programming Adam Gerber, PhD, SCJPgerber@cs.uchicago.edu office: Ryerson CS Lab 4th Floor office hrs: 3:30-5:30pm Wed

  2. Android Portfolio: http://www.flickr.com/photos/89831807@N02/show/ Survey of the class Your name, hailing from, what you studied in undergrad, what you want to accomplish with this degree? (waive option)

  3. Evaluations • proPres 10%proData 10%proService 10%Class participation 10%Midterm exam 15% proWeb 20% (final project)Team Project 25%

  4. Project Due Dates • proPres: due Tues July 15 at 11:59pmproData: due Tues July 22 at 11:59pmproService: due Tues July 29 at 11:59pmproWeb: due Tues September 2 at 11:59pm

  5. Team Projects Each team will be responsible for: 1/ creating a deck of slides describing the architecture of the technology Each team member will be responsible for: 1/ creating a lab using the course tools Maven/Git/NetBeans and making their lab available on bitbucket as public repo. 2/ lecturing for 1/2 hour on that lab in weeks 7, 8, or 9. See course website for dates: http://java-class.cs.uchicago.edu/adv/

  6. Piazza • Piazza: • https://piazza.com/uchicago/summer2014/mpcs51037/home  • Course website: • http://java-class.cs.uchicago.edu/adv/

  7. Lecture 01 Agenda: 1/ intro • 2/ bitBucket register 3/ setup dev environment JDK, maven, git, sourcetree, p4merge, netBeans 8, glassfish 4/ intro to maven, netbeans, & git

  8. Registering Bitbucket account Remote source-control: http://java-class.cs.uchicago.edu/adv/

  9. Set-up dev enviornment: ~/content/java_adv_install.txt

  10. Java • Java is modeled after C++ • The majority of runtime errors in a C++ program are due to improper memory management (memory leaks). • Java is a memory-managed environment. In practice, that means you don’t have to worry about de-allocating memory when an object which was allocated on the heap falls out of scope. Garbage collected. • Since JEE and JSE 1.5+, you may let the run-time environment manage both the allocation and de-allocation of objects.

  11. Java memory mgmt We are responsible for allocating memory on the heap using the new keyword. The JVM is responsible for de-allocating memory with the garbage collector. The finalize() method is the closest we can get to intercepting de-allocation. Date date = new Date("11/18/2007"); System.out.println(date.toString()); //program exits The run-time environment (JEE container or JVM 1.5+) is responsible for de-allocating AND allocating memory on the heap. @Inject Date date; System.out.println(date.toString()); //program exits

  12. Java • Java is Write Once Run Anywhere (WORA). A java program can run on any platform that has a JVM. • A Java WAR file can run on any JEE compliant web-server, such as Tomcat, JBoss, Wirefly, Glassfish.

  13. What Sun (now Oracle) says about Java • “…we designed Java as closely to C++ as possible in order to make the system more comprehensible. Java omits many rarely used, poorly understood, confusing features of C++ that, in our experience, bring more grief than benefit.”

  14. Architecture Neutral Java Code is compiled to .class files which are interpreted as bytecode by the JVM. (.NET does this too; only you’re trapped in an MS op system.) JIT compilers like HotSpotare very fast – little difference between in performance between machine-binary and interpreted byte-code.

  15. Implementation Independence • A java int is ALWAYS 32bits; regardless of operating system. • A java long is ALWAYS 64bits. • Etc. • The same is not true of C/C++.

  16. No Pointers • There are no pointers in Java • Instead Java uses references; which for all intents and purposes, behave like pointers.

  17. Version numbers in Java • Jdk1.5 == Java 5.0 • Jdk1.6 == Java 6.0 • Jdk1.7 == Java 7.0

  18. Wrapper Classes • Every primitive has a corresponding Wrapper class. • For example; double has Double, int has Integer, boolean has Boolean, char has Character, etc. • These wrapper classes can be very useful when storing values in collections which require you to use objects, and forbid the use of primitives.

  19. The API Documentation of the Standard Java Library http://docs.oracle.com/javase/7/docs/api/

  20. Object heirarchies • You can also see the API online. Determine the version you using by typing> java –version http://docs.oracle.com/javase/7/docs/api/ • Class hierarchies. • The Object class is the grand-daddy of ALL java classes. • Every class inherits methods from Object. • And from all its other ancestry. • Even if you create a class that extends no other classes, you still extend Object by default.

  21. Class Object • A blueprint is to a house as a class is to an object • Class = Blueprint

  22. Class Objects

  23. Class Object • A blueprint is to a car as a class is to an object • Class = Blueprint

  24. Class Objects

  25. Spot the “class” here

  26. Pass by value and reference

  27. pass by value pass by reference Action: Tell my accountant how much I intend to spend on a new car. Change in bank account: no change. Action: Swipe debit card and enter pin at the Bently dealership. Change in bank account: -125k.

  28. If a tree falls in a forest and no one is around to hear it, does it make a sound?

  29. Event-Source (Button) No Event-Listener listening Event (onClick) No Catcher No Event Listener

  30. OnClick-Listener Event-Listener listening Event-Source (Button) Event (onClick) Any Object Catcher ready to catch

  31. Wrong Event

  32. Event source not registered

  33. OnClick-Listener OnMouse-Listener Event-Listener listening Event-Source (Button) Event (onClick) Any Object Event (onMouse) Catcher ready to catch

  34. Install Maven http://maven.apache.org/download.cgi On Windows: verify M2_HOME is created and PATH contains M2_HOME On Mac/Linux: export M2_HOME=/home/user/java/apache-maven-3.0.3 export PATH=/home/user/java/apache-maven-3.0.3/bin:${PATH} mvn --version

  35. Remote Local

  36. Fork-and-Clone projects

More Related