שפת Java פותחה על ידי חברת Sun. כיום החברה נרכשה על ידי Oracle. השפה מבוססת C++, היא שפה מוכוונת עצמים וגם מוכוונת רשת. שפה זו יכולה לרוץ בפלטפורמות שונות כאשר כותבים קוד אחד בלבד. ביצועים אשר אינם קשורים לרשת, עדיפים בשפת C++.
ב Java ישנה גם ערכת פיתוח ג'אווה הנקראת JDK (Java Development Kit) הכוללת ספריות של Java. הגירסה בה נשתמש היא JDK6 (JDK 1.6) והיא האחרונה אותה הפיצה חברת Sun. חבילת JDK כוללת גם את JRE (Java Runtime Environment) שהיא סביבת הרצה המיועדת למשתמשי Java אשר אינם מפתחי Java. בתהליך כתיבת התוכנית, קוד ה Java (*.java) מהודר ל Byte Code (*.class) ו ה JVM (Java Virtual Machine) מפרש את שורות הקוד ומריצן. ערכת פיתוח התוכנה SDK (Software Development Kit) מורכבת אם כן מסביבת פיתוח משולבת IDE (Integrated Development Environment) יחד עם ערכת פיתוח ג'אווה JDK.
סביבת הפיתוח Eclipse פותחה על ידי חברת IBM.
הורדת Eclipse Classic 3.5.1: בעזרת מנוע Google מגיעים אל Eclipse Downloads בכתובת: http://www.eclipse.org/downloads/ ומורידים לתיקיית ה Java הרצויה. יוצרים עבור הקובץ eclipse.exe אשר בתיקיית ה eclipse קיצור דרך על שולחן העבודה.
התקנת JDK 1.6: בעזרת מנוע Google מגיעים אל Java SE 6.0 (Java Standard Edition 6.0) בכתובת: http://www.sun.com/javase/downloads/index.jsp מורידים ומתקינים את JDK.
שימוש ב Eclipse: מפעילים את קיצור הדרך אל eclipse ובוחרים את תיקיית מרחב העבודה work space. לאחר הפעלה ראשונה ניתן לשנות את מרחב העבודה באמצעות התפריט File → Switch Workspace → Other → Path Name → OK. בוחרים שם עבור הפרויקט באמצעות התפריט File → New → Java Project → Project Name → Finish.
יוצרים חבילה באמצעות התפריט File → New → Package → Name → Finish או על ידי קליק תפריט על src → New → Package → Name → Finish. מוסכם כי שם החבילה יתחיל באות זעירה.
בתוך החבילה יוצרים מחלקות על ידי סימון המחלקה ובאמצעות התפריט File → New → Class → Name → Finish או על ידי קליק תפריט על החבילה למשל myPackage → New → Class → Name → Finish. מוסכם כי שם המחלקה יתחיל באות רבתי.
| סוג | מס' בתים | ערכים |
|---|---|---|
| char | 2 בתים | 'A'→'Z', 'a'→'z', '0'→'9', תוים נוספים |
| byte | 1 בית או 8 סיביות | במספרים לא מכוונים: 0→255 או במספרים מכוונים: -128→127 |
| short | 2 בתים או 16 סיביות | במספרים לא מכוונים: 0→65,535 או במספרים מכוונים: -32768→32767 |
| int | 4 בתים או 32 סיביות |
במספרים לא מכוונים: 0→4,294,967,295 במספרים מכוונים: -2,147,483,648→2,147,483,647 4 מיליארד, 294 מיליון, 967 אלף ו 296 צירופים שונים. |
| long | 8 בתים או 64 סיביות |
במספרים לא מכוונים: 0→18,446,744,073,709,551,615 במספרים מכוונים: -9,223,372,036,854,775,808→9,223,372,036,854,775,807 18 טריליון, 446 בליארד, 744 ביליון, 73 מיליארד, 709 מיליון, 551 אלף ו 616 צירופים שונים. |
| float | 4 בתים או 32 סיביות | מספר ממשי |
| double | 8 בתים או 64 סיביות | מספר ממשי |
| boolean | 1 byte | true, false |
| סוג ההגבלה | תאור |
|---|---|
| private | מאפשר גישה רק לשיטות של אותה המחלקה. |
| protected | מאפשר גישה לשיטות אותה המחלקה וגם לשיטות היורשות של המחלקה. |
| package | מאפשר גישה לכל השיטות בחבילה זו וגם לשיטות היורשות מהן. זוהי גם ברירת המחדל. |
| public | מאפשר גישה לכל השיטות. |
| מטרה | קוד |
|---|---|
| הגדרת מחלקה | |
| נתינת שם לעצם אחד או יותר | |
| הקצאת זכרון לעצם | |
| נתינת שם לעצם והקצאת זכרון במשולב | |
| נתינת שם למערך עצמים | |
| הקצאת זכרון למצביעי המערך | |
| הקצאת זכרון לאברי המערך | |
| נתינת שם למערך עצמים במשולב עם הקצאת זכרון למצביעיו. הקצאת הזכרון לאברי המערך תתבצע בנפרד | |
class car
{
private String model;
private int number;
private int year;
public car(String m,int n,int y)
{
model = m;
number = n;
year = y;
}
}
package myMain;
import java.util.LinkedList;
import myPackage.Airplane;
import myPackage.Bicycle;
import myPackage.Car;
import myPackage.RacingCar;
import myPackage.Vehicle;
public class MainApp {
public static void main(String[] args) {
LinkedList linked = new LinkedList();
linked.add(new Bicycle("Peugeot", 1000, 18));
linked.add(new Airplane("Boeing", 1000000, 600));
linked.add(new Car("Renault", 600000, 5));
linked.add(new RacingCar("Porsche", 800000, 1, 230));
linked.add(new RacingCar("Lamborghini", 230000, 1, 230));
for (int i = 0; i < linked.size(); i++) {
linked.get(i).show();
}
System.out.println("---------------------");
System.out.println("Total Vehicles: " + linked.size());
int max = 0;
int count = 0;
for (int i = 0; i < linked.size(); i++) {
if (linked.get(i).getPrice() == max) {
count++;
} else if (linked.get(i).getPrice() > max) {
max = linked.get(i).getPrice();
count = 1;
}
}
System.out.print("Most Expensive:");
for (int i = 0; i < linked.size(); i++) {
if (linked.get(i).getPrice() == max) {
System.out.print(" " + linked.get(i).getName());
if (--count != 0)
System.out.print(",");
else
System.out.print(".");
}
}
System.out.println("");
max = 0;
count = 0;
for (int i = 0; i < linked.size(); i++) {
if (linked.get(i) instanceof RacingCar) {
if (((RacingCar) linked.get(i)).getMaxSpeed() == max) {
count++;
} else if (((RacingCar) linked.get(i)).getMaxSpeed() > max) {
max = ((RacingCar) linked.get(i)).getMaxSpeed();
count = 1;
}
}
}
System.out.print("Fastest Racing Car:");
for (int i = 0; i < linked.size(); i++) {
if (linked.get(i) instanceof RacingCar) {
if (((RacingCar) linked.get(i)).getMaxSpeed() == max) {
System.out.print(" " + linked.get(i).getName());
if (--count != 0)
System.out.print(",");
else
System.out.print(".");
}
}
}
System.out.println("");
System.out.println("---------------------");
}
}
package myPackage;
public abstract class Vehicle {
protected String name;
protected int price;
public Vehicle(String name, int price) {
this.name = name;
this.price = price;
}
public void show() {
System.out.println("---------------------");
System.out.println("Name: " + this.name);
System.out.println("Price: " + this.price);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
package myPackage;
public class Bicycle extends Vehicle {
protected int gear;
public Bicycle(String name, int price, int gear) {
super(name, price);
this.gear = gear;
}
public void show() {
super.show();
System.out.println("Gear: " + this.gear);
}
public int getGear() {
return gear;
}
public void setGear(int gear) {
this.gear = gear;
}
}
package myPackage;
public class Airplane extends Vehicle {
protected int seat;
public Airplane(String name, int price, int seat) {
super(name, price);
this.seat = seat;
}
public void show() {
super.show();
System.out.println("Seat: " + this.seat);
}
public int getSeat() {
return seat;
}
public void setSeat(int seat) {
this.seat = seat;
}
}
package myPackage;
public class Car extends Vehicle {
protected int door;
public Car(String name, int price, int door) {
super(name, price);
this.door = door;
}
public void show() {
super.show();
System.out.println("Door: " + this.door);
}
public int getDoor() {
return door;
}
public void setDoor(int door) {
this.door = door;
}
}
package myPackage;
public class RacingCar extends Car {
protected int maxSpeed;
public RacingCar(String name, int price, int door, int maxSpeed) {
super(name, price, door);
this.maxSpeed = maxSpeed;
}
public void show() {
super.show();
System.out.println("Max Speed: " + this.maxSpeed);
}
public int getMaxSpeed() {
return maxSpeed;
}
public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
}
}