Java
Install openjdk
See http://openjdk.java.net/install/. On Ubuntu, I can use
sudo apt-get install openjdk-7-jdk
Some projects written in Java
- FastQC The code uses Java 2D graphics APIs in awt like BasicStroke, Color, Dimension, Graphics, Graphics2D, RenderingHints and javax.swing.JPanel. It also uses java.util.Vector.
Tutorial/Books
- Oracle Tutorial
- Head First Java
- Murach's Java Programming
- Interactive Java Tutorial
- Introduction to programming in Java
- Package, classpath
- codecademy
Compile a simple Java program
javac HelloWorldApp.java # generate Example.class; bytecode version of the program java HelloWorldApp # run bytecode in Java Virtual Machine
Get a hello world program from http://docs.oracle.com/javase/tutorial/getStarted/cupojava/unix.html.
Note that the file name can not be arbitrary. It should match with the class name. For the above example, if we rename <HelloWorldApp.java> to <example.java>, we will get an error when we run java example on the command line.
Another example that requires command line argument.
// Sqrt.java public class Sqrt { public static void main(String[] args) { // read in the command-line argument double c = Double.parseDouble(args[0]); double epsilon = 1e-15; // relative error tolerance double t = c; // estimate of the square root of c // repeatedly apply Newton update step until desired precision is achieved while (Math.abs(t - c/t) > epsilon*t) { t = (c/t + t) / 2.0; } // print out the estimate of the square root of c System.out.println(t); } } $ javac Sqrt.java $ java Sqrt 9 3.0 $ java Sqrt 9.5 3.0822070014844885
Set the Java version for a project
To change the Java version for a project if a newer version becomes available: right click on a project, then select properties
- Libraries - Java Platform - change the version from the drop-down list. I only see JDK 1.7.
If you want to use the new features of that version and you don't need the project to run under earlier versions of Java.
- Sources - Source/Binary format - change the version from the drop-down list. I can see a lot of choices.
Java Programming
Main method
Main method has to be declared within a class declaration.
public class InvoiceApp { public static void main(String[] args) { System.out.println("Welcome to my app"); } }
Create objects of numerical variables, string, from a class
int scoreCounter = 1; double unitPrice = 15.9; String firstName = "Joe"; String lastName = "Wang"; String name = firstName = " " + lastName; Scanner sc = new Scanner(System.in); double subtotal = sc.nextDouble(); // get a double entry from the console Date now = new Date(); String currentDate = now.toString(); // convert the date to a string
Common packages
- java.lang
- java.text
- java.util
- java.io
- java.sql
- java.applet
- java.awt
- java.awt.event
- javax.swing
Two ways to create an object from the Scanner class.
With an import statement
import java.util.Scanner; Scanner sc = new Scanner(System.in);
Without an import statement
java.util.Scanner sc = new java.util.Scanner(System.in);
Console for input/output
Use the System.out object to print output to the console (println() is a method). Here, System.out refers to an instance of the PrintStream class. Because this object is created automatically by Java, you don't have to include code that creates it in your program.
System.out.println("Total: " + total);
Use the Scanner class to read input from the console
import java.util.Scanner String name = sc.next(); int count = sc.nextInt(); double subtotal = sc.nextDouble(); String cityName = sc.nextLine();
Control statement
== != equals(String) equalsIgnoreCase(String) if () { } else {} while () { }
Classes
Inheritances
Interfaces
Array
Collection, generics
Dates, strings
Text and binary files
Swing
Hello World Example
For example, create a new subdirectory 'start' and put HelloWorldSwing.java there. Then we can build and run the swing program by
javac start/HelloWorldSwing.java # Or javac HelloWorldSwing.java if we are in start directory java start.HelloWorldSwing
Quit Button Example
Note that it is necessary to create the directory com/zetcode according to package statement in java code. Also the filename must be consistent with the class name.
mkdir com mkdir com/zetcode nano com/zetcode/QuitButtonExample.java javac com/zetcode/QuitButtonExample.java java com/zetcode/QuitButtonExample