Advanced Java Programming Advanced Java Programming

Advanced Java Programming - PowerPoint Presentation

jane-oiler . @jane-oiler
Uploaded On 2019-11-20

Advanced Java Programming - PPT Presentation

Advanced Java Programming Adam Gerber PhD SCJP gerbercsuchicagoedu office Ryerson CS Lab 4 th Floor office hrs 330530pm Wed Survey of the class Your name hailing from what you studied in undergrad what you want to accomplish with this degree waive option ID: 765796

java git event class git java class event object commit memory date head listener due change branch maven allocating




Download Presentation from below link

Download Presentation The PPT/PDF document "Advanced Java Programming" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.

Presentation Transcript

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

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

EvaluationsproPres 10%proData 10%proService 10%Class participation 10%Midterm exam 15% proWeb 20% (final project)Team Project 25%

Project Due DatesproPres: 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

Team ProjectsEach team will be responsible for:1/ creating a deck of slides describing the architecture of the technologyEach 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/

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

Lecture 01 Agenda:1/ intro2/ bitBucket register3 / setup dev environment JDK, maven, git , sourcetree , p4merge, netBeans 8, glassfish 4/ intro to maven, netbeans, & git

Registering Bitbucket accountRemote source-control:http://java-class.cs.uchicago.edu/adv/

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

JavaJava 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.

Java memory mgmtWe 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

JavaJava 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.

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.”

Architecture NeutralJava 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 HotSpot are very fast – little difference between in performance between machine-binary and interpreted byte-code.

Strictly OOJava is strictly Object-Oriented. Java code must be encapsulated inside a class . No procedural programming; and no spaghetti code.

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

No PointersThere are no pointers in JavaInstead Java uses references; which for all intents and purposes, behave like pointers.

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

Wrapper ClassesEvery 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.

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

Object heirarchiesYou can also see the API online. Determine the version you using by typing> java –versionhttp://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.

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

Class Objects

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

Class Objects

Spot the “class” here

Pass by value and reference

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.

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

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

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

Wrong Event

Event source not registered

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

Install Mavenhttp://maven.apache.org/download.cgiOn Windows: verify M2_HOME is created and PATH contains M2_HOMEOn Mac/Linux:export M2_HOME=/home/user/java/apache-maven-3.0.3export PATH=/home/user/java/apache-maven-3.0.3/bin:${PATH}mvn --version


Fork-and-Clone projects

GIT architecture

git config --global user.name "Your Name"git config --global user.email "your_email@whatever.com"

add/reset/commit:move files from working-dir to stage-dir(aka index)git add .git add src/.git add src/lec01/ glab /DigitalToBinary.java move files from stage-dir(aka index) to working-dir git reset HEAD . git reset head src /. git reset head src /lec01/glab/DigitalToBinary.java git commit -m “your commit message.”

Amending:Every commit is associated with a sha-1 hash. That hash is derived from 1/ the file changes in that commit and 2/ the previous commit. You can not change any commit unless that commit is at the head. Since no other commits depend on the head, you may safely change the head. To change the head, use git commit --amend -m “your message” git commit --amend --no-edit

Reverting:You can roll back a commit (reverse it) by identifying it's sha1 hash like so. git revert --no-edit 71ac

Branching: To list the branches in a project:git branchgit branch -r git branch --all To create a branch: git checkout -b branchName c39b git checkout -b branchName To delete a branch: git branch -D branchName To checkout a branch: git checkout 7afe git checkout master

Pushing to remotes: To see the remotes:git remote -v show To push to a remote:git push origin master:master git push origin master git push --all

Pulling from remotes: To see the remotes:git remote -v show To pull from a remote:git pull --all git pull origin eval

NetBeans keymap