Download Java 1.5

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Java 1.5 New Features
Java 1.0
Java 1.1
Java 1.2
Java 1.3
Java 1.4
8 packages
212 classes
23 packages
504 classes
59 packages
1520 classes
77 packages
1595 classes
103 packages 131 packages
2175 classes 2656 classes
New Events
JFC/Swing
JNDI
Inner class
Drag and
Drop
Java Sound
Object
Serialization Java2D
Jar Files
Timer
JDBC
javax.activity,
javax.
management
java.nio, javax.imageio,
javax.net, javax.print,
javax.security, org.w3c
CORBA
International
Reflection
Regular Exp
Logging
Assertions
NIO
Java 1.5
javax.naming, javax.sound,
javax.transaction
RMI
javax.accessibility, javax.swing, org.omg
java.math, java.rmi, java.security, java.sql, java.text, java.beans
java.applet, java.awt, java.io, java.lang, java.net, java.util
New Features
•
•
•
•
•
•
Scanner
Printf
Autoboxing
Enumerated Types
Foreach loop
Generic Types
Other New Features
• Static import:
import static java.Math.*;
• Variable length argument lists.
• Semaphores
• Metadata
java.util.Scanner
Scanner stdin = Scanner.create(System.in);
int n = stdin.nextInt();
String s = stdin.next();
boolean b = stdin.hasNextInt()
printf method
• Similar to C style printf
• Handles
– strings
– native types
– numeric types
– java.util.Date
• See java.util.Formatter for details
Autoboxing/Unboxing
• Wrap ints into Integers
• Extract ints from Integers
This is now legal:
Integer x = 6;
//6 is boxed
Integer y = 2*x + 3; //x is unboxed, 15 is boxed
You could hide primitives entirely!
Object Only Performance
int x = 6;
int y = 2*x;
Code:
0:
2:
3:
4:
5:
6:
bipush
istore_1
iconst_2
iload_1
imul
istore_2
6
Object Only Performance
Integer x = 6;
Integer y = 2*x;
Code:
0:
2:
bipush
invokestatic
5:
6:
7:
8:
astore_1
iconst_2
aload_1
invokevirtual
11:
12:
imul
invokestatic
15:
astore_2
6
#2;
//Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
#3;
//Method java/lang/Integer.intValue:()I
#2;
//Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
Object Only Performance
Integer x = Integer.valueOf(6);
Integer y = Integer.valueOf(2 * x.IntValue);
Generates the same byte code.
Type-safe enum
enum Day { SUNDAY, MONDAY, TUESDAY,
WEDNESDAY, THURSDAY,
FRIDAY, SATURDAY }
//used
Day today = Day.WEDNESDAY;
switch(today){
case SUNDAY:
break;
//…
}
More Complex Enum
enum Suit {
CLUBS(Color.BLACK),
DIAMONDS(Color.RED),
HEARTS(Color.RED),
SPADES(Color.BLACK);
private Color color;
Suit(Color color) { this.color = color; }
public Color getColor() { return color; }
}
Generics
ArrayList<Number> list = new
ArrayList<Number>();
list.add(new Integer(5));
list.add(6);
list.add(new Double(3.14159/2));
list.add(new
BigInteger("123456789012301234567890"));
list.add(new Long(127L));
Number n = list.get(i);
Defining Generics
public class GenericStack<T> implements Iterable<T> {
private T[] data; …
public GenericStack() {
data = (T[])new Object[MIN_SIZE]; …
}
public T pop(){ … }
public void push(T item) { … }
public Iterator<T> iterator(){ … } //since it is iterable
}
Defining Generic Iterator
//inner class of GenericStack
private class GenericStackIterator implements Iterator<T> {
int index;
GenericStackTestIterator() {
index = top;
}
public boolean hasNext() { return index >= 0; }
public T next() {
if(index < 0) {
throw new java.util.NoSuchElementException();
}
T item = data[index];
index--;
return item;
}
public void remove() {
throw new UnsupportedOperationException( )
}
}
For each loop (arrays)
double[] array = {2.5, 5.2, 7.9, 4.3, 2.0};
for(double d: array)
{
System.out.println(d);
}
Iterate (forward) through the array without paying
attention to indices.
For each loop (Collections)
ArrayList<Integer> list = new
ArrayList<Integer>();
list.add(7);
list.add(15);
list.add(-67);
for(Integer number: list){
System.out.println(number);
}
For each loop enums
for( Suit s: Suit.values()){
System.out.println(s.getColor());
}
values() returns an Iterator for enum types
Wish list
• Preprocessor
– Embedded languages: SQL,
Regular Expression syntax.
• Operator Overloading
– Assignment
– Equality
– [ ] for Lists
Classroom Incorporation
• Investigate use with undergrad.
• Example: Servlets/JSP in Databases
JavaCard in Architecture.
• Metadata for Generating Code in
Compilers
References
• Calvin Austin. J2SE 1.5 in a Nutshell.
http://java.sun.com/developer/technicalArticles/releases/j
2se15
• Gilad Bracha. Generics in the Java Programming
Language. http://java.sun.com/j2se/1.5/pdf/genericstutorial.pdf
• David Flanagan. Java in a Nutshell. O’Reilly. 1st, 2nd and
3rd editions.
• Cay Hortsmann and Gary Cornell. Core Java 2. Prentice
Hall.
Examples online
http://cs.gettysburg.edu/~cpresser/java
The latest additions will be made next week
Including this presentation.
email: [email protected]
The End….
No, really.
Stop clicking.
Java History
Java 1.0
8 Packages, 212 Classes
Java 1.1
23 Packages, 504 Classes
–
–
–
–
–
–
–
–
New event model
Inner classes
Object Serialization
JAR files
Internationalization
Reflection
Java Database Connectivity (JDBC)
Remote Method Invocation (RMI)
Java History
Java 1.2
59 Packages, 1520 Classes
– JFC (Swing)
– Drag and Drop
– Java 2D
Java 1.3
77 Packages, 1595 Classes
– Java Naming and Directory Interface (JNDI)
– Java Sound
– Timer class
Java History
Java 1.4
–
–
–
–
103 Packages, 2175 Classes
Regular Expressions
Assertions
Logging
New I/O (NIO)
Java 1.5
131 Packages, 2656 Classes
– What, and ruin the surprise?
Related documents