Senin, 16 April 2012

Program Pengolahan Nilai dengan Java

ini listingnya:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class nilai extends JFrame implements ActionListener
{
private  JTextField nim,nm,uts,uas,tugas,total;
private  JComboBox semester;
final   String[]    pilih =
          {
              "1",
              "2",
              "3",
              "4",
              "5",
              "6"
                };
private  JRadioButton mi,tk,ka;
   private  JButton hitung,keluar;
    public static void main(String[] args)
    {
    nilai frame=new nilai();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
    }
    public nilai()
    {
    setTitle("Program Pengolahan Nilai");
    JPanel p1= new JPanel();
    p1.setLayout(new GridLayout(10,1));
    p1.add(new JLabel("NIM Mahasiswa :"));
    p1.add(nim=new JTextField(3));
    p1.add(new JLabel("Nama Mahasiswa :"));
    p1.add(nm=new JTextField(3));
   
    // UNTUK MEMEBUAT RADIOBUTTON
     
      p1.add(new JLabel("Jurusan :"));
       JRadioButton m_sem1 = new JRadioButton ("MI");
       JRadioButton m_sem2 = new JRadioButton ("TK");
       JRadioButton m_sem3 = new JRadioButton ("KA");
       p1.add(m_sem1); 
       p1.add(m_sem2);  
       p1.add(m_sem3);
         
        this.getContentPane().add(p1);
        
        //UNTUK MEMBUAT COMBOBOX
        
        p1.add(new JLabel("Semester :"));
    semester = new JComboBox();
semester.setBounds( 20, 35, 260, 20 );
p1.add( semester );
   
    // Populate the combobox list
for( int iCtr = 0; iCtr < pilih.length; iCtr++ )
   semester.addItem( pilih[iCtr] );
   
   
    p1.add(new JLabel("Nilai UTS :"));
    p1.add(uts=new JTextField(3));
    p1.add(new JLabel("Nilai UAS :"));
    p1.add(uas=new JTextField(3));
    p1.add(new JLabel("Nilai Tugas :"));
    p1.add(tugas=new JTextField(3));
    p1.add(new JLabel("Nilai murni :"));
    p1.add(total=new JTextField(4));
total.setEditable(false);
    
    
   
    Dimension dim=new Dimension (650,400);
    p1.setPreferredSize(dim);
    JPanel p2=new JPanel();
    p2.setLayout(new FlowLayout());
    p2.add(hitung=new JButton("Hitung"));
    p2.add(keluar=new JButton("Keluar"));
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(p1,BorderLayout.CENTER);
    getContentPane().add(p2,BorderLayout.SOUTH);
    hitung.addActionListener(this);
    keluar.addActionListener(this);
}
public void actionPerformed (ActionEvent e)
{
if (e.getSource()==hitung)
{
double  nuts=(Double.parseDouble(uts.getText().trim()));
double nuas=(Double.parseDouble(uas.getText().trim()));
double ntgs=(Double.parseDouble(tugas.getText().trim()));
double murni=(nuts*0.2)+(nuas*0.3)+(ntgs*0.5);
total.setText(String.valueOf(murni));
}
else if(e.getSource()==keluar)
{
System.exit(0);
}
}
    

}

hasilnya :

Minggu, 01 April 2012

Tugas penjualan susu

Hal.75 No.3


import java.util.*;
public class nested_IF {
   public static void main(String[] args)
    {
    String merk,ukuran;
    int hrg,jumlah,total;
   
    System.out.println("TOKO KELONTONG KERONCONGAN");
    System.out.println("=============================");
    System.out.println("A. Susu Dancow");
    System.out.println("\t1. Ukuran Kecil");
    System.out.println("\t2. Ukuran Sedang");
    System.out.println("\t3. Ukuran Besar");
    System.out.println("B. Susu Bendera");
    System.out.println("\t1. Ukuran Kecil");
    System.out.println("\t2. Ukuran Sedang");
    System.out.println("\t3. Ukuran Besar");
    System.out.println("C. Susu SGM");
    System.out.println("\t1. Ukuran Kecil");
    System.out.println("\t2. Ukuran Sedang");
    System.out.println("\t3. Ukuran Besar");
   
    Scanner input=new Scanner(System.in);
   
    System.out.print("Masukan Merk Susu[Dancow|Bendera|SGM]  :");
    merk=input.nextLine();
    System.out.print("Masukan Ukuran Kaleng[1|2|3]   :");
    ukuran=input.nextLine();
   
    if(merk.equalsIgnoreCase("Dancow"))
    {
    if(ukuran.equalsIgnoreCase("1"))
    hrg=5000;
    else if(ukuran.equalsIgnoreCase("2"))
    hrg=20000;
  else
  hrg=15000;    
    }
    else if(merk.equalsIgnoreCase("Bendera"))
    {
    if(ukuran.equalsIgnoreCase("1"))
    hrg=20000;
    else if(ukuran.equalsIgnoreCase("2"))
    hrg=17500;
  else
  hrg=13500;    
    }
    else
    {
    if(ukuran.equalsIgnoreCase("1"))
    hrg=22000;
    else if(ukuran.equalsIgnoreCase("2"))
    hrg=18500;
  else
  hrg=15000;    
    }
    System.out.print("\nHarga Satuan Barang Rp."+hrg);
    System.out.print("\nJumlah Yang dibeli   :");
    jumlah=input.nextInt();
   
    total=hrg*jumlah;

    System.out.print("Harga Yang Harus dibayar Sebesar Rp."+""+total);
       }
    }
 


  penjelasan program:

  1.  baris 1 : import java.util.*; , Digunakan untuk menyertakan package java.util.
  2.  baris 2 : Membuat Class dengan nama nested_IF
  3.  baris 5-6 : mendeklarasikan variabel String (merk, ukuran) dan Integer ( jumlah,harga,total)
  4.  baris 23 : Membuat Objek standard masukan (Scanner)
  5.  baris 26-28 : perintah untuk menginput String 
  6.  baris 30-56 :  membuat perintah kondisi nested if
  7.  baris 59 : perintah untuk menginput Integer
  8.  baris 61 : perhitungan Total Harga = Harga x Jumlah Beli  
  9.  baris 63 : mendeklarasikan keluaran total harga.


Hasil :








Tugas Nilai Akhir siswa



 Latihan hal.74

import java.util.*;
public class Lat_IF {

    public static void main(String[] args)
    {
        String nama,grade;
        double nh,nt,na,total;
       
        System.out.println("PROGRAM HITUNG NILAI AKHIR");
       
        Scanner input= new Scanner(System.in);
       
        System.out.print("Nama Siswa  :");
        nama=input.nextLine();
        System.out.print("Nilai Hadir  :");
        nk=input.nextDouble();
        System.out.print("Nilai Tugas  :");
        nt=input.nextDouble();
        System.out.print("Nilai Akhir  :");
        nu=input.nextDouble();import java.util.*;
       
        total=(nk*0.2)+(nt*0.3)+(nu*0.5);
       
        if(total>=80)
        {
            grade="A";
        }
        else if(total>=70)
        {
            grade="B";
        }
        else if(total>=59)
        {
            grade="C";
        }
        else if(total>=50)
        {
            grade="D";
        }
        else
        {
            grade="E";
        }
       
        System.out.println("Jadi siswa yang bernama  "+ nama+" memperoleh nilai akhir sebesar  "+total);   
        System.out.println("Grade yang di dapat adalah  "+grade);
    }
   
   

}





 
penjelasan program :
  1.  baris 1 : import java.util.*; ,Digunakan untuk menyertakan package java.util.
  2.   baris 6 dan 7: pembuatan variabel dan tipe data 
  3.  baris 9 : Membuat Objek standard masukan 
  4. baris 13-20 : perintah untuk menginput String dan Double
  5.  baris 22 : Proses untuk menghitung nilai akhir
  6.  baris 24-43 : Pengkondisian IF...Else
  7.  baris 45-47 : Hasil Output /keluaran
hasil program:



Jumat, 23 Maret 2012

Method dan Parameter

Method
Di dalam Java, kita dapat mendefinisikan banyak method yang akan kita panggil dari method yang berbeda.
Sebuah method adalah bagian-bagian kode yang dapat dipanggil oleh program utama atau
dari method lainnya untuk menjalankan fungsi yang spesifik.
Berikut adalah karakteristik dari method :
dapat mengembalikan satu nilai atau tidak sama sekali
dapat diterima beberapa parameter yang dibutuhkan atau tidak ada parameter sama
sekali. Parameter bisa juga disebut sebagai argumen dari fungsi
setelah method telah selesai dieksekusi, dia akan kembali pada method yang
memanggilnya.

Sekarang mengapa kita butuh untuk membuat banyak method? Mengapa kita tidak menuliskan semua kode pada sebuah method? Hal ini karena penyelesaian masalah yang sangat efektif adalah memecah masalah-masalah tersebut menjadi beberapa bagian. Kita juga dapat melakukan hal ini di Java dengan membuat method untuk mengatasi bagian tertentu dari masalah. Sebuah permasalahan dapat dipecah-pecah menjadi beberapa bagian kecil. Hal ini sangat baik sekali untuk membuat program yang sangat besar.


Deklarasi Method
Sebelum kita membahas method apa yang akan dipakai pada class, mari kita perhatikan penulisan method secara umum.
Dalam pendeklarasian method, kita tuliskan :

<modifier> <returnType> <name>(<parameter>) {
<statement>
}

<modifier> dapat menggunakan beberapa modifier yang berbeda
<returnType> dapat berupa seluruh tipe data, termasuk void
<name> identifier atas class
<parameter> ::= <tipe_parameter> <nama_parameter>[,]

Contoh :

public class Mahasiswa
{
private String name;


public String getName(){
return name;
}
}

public - Menjelaskan bahwa method tersebut dapat diakses dari object luar class
String - Tipe data return value dari method tersebut bertipe String
getName - Nama dari method
() - Menjelaskan bahwa method tidak memiliki parameter apapun

Pernyataan,

return name;

dalam program kita menandakan akan ada pengembalian nilai dari nama instance variable ke pemanggilan method. Perhatikan bahwa return type dari method harus sama dengan tipe data seperti data pada pernyataan return.



Parameter
Parameter adalah Suatu Nilai yang dapat diubah ubah dari luar untuk menentukan hasil yang akan di tampilkan. Perhatikan hal berikut :
Mengirim —> Parameter Aktual // yang dimain
Mengerima —> Parameter Formal
Catatan penting :
Static void tampil(int e) à int e adalah suatu parameter formal.
Cetak(k). k adalah parameter actual atau parameter yang dimasukkan
catatan penting : lebih dikenal dengan sebuat method static dan non static :
Methode Static yakni method yang dapat dipanggil walaupun kelas belum diinstansiasi jadi objek.
Mehod non-Static yakni method yang tidak dapat dipanggil jika kelas belum diinstansiasi jadi objek.


Kamis, 22 Maret 2012

Kalkulator

a. Class Kalkulator
class kalkulator
            {
            int operand1;
            int operand2;
            int pertambahan()
            {
                        return operand1+operand2;
            }
            void setPertambahan (int operand1, int operand2)
            {
            operand1 = operand1;
            operand2 = operand2;
            }
            int pengurangan()
            {
                        return operand1-operand2;
            }
            void setPengurangan (int operand1, int operand2)   
            {
            operand1 = operand1;
            operand2 = operand2;
            }
}



b. Class Kalkulator Beraksi

public class kalkulatorberaksi
            {
            public static void main (String[] args)
                        {
                        kalkulator kalkulatorsaya = new kalkulator();
                        int pertambahan;
                        kalkulatorsaya.operand1 = 30;
                        kalkulatorsaya.operand2 = 30;
                        pertambahan=kalkulatorsaya.operand1+kalkulatorsaya.operand2;
                        System.out.println("Pertambahan : 30+30 ="+ pertambahan);
                        kalkulatorsaya.setPertambahan(30,30);
                        pertambahan = kalkulatorsaya.pertambahan();
                        System.out.println("Pertambahan = " + pertambahan);
                                    System.out.println("\n");
                        int pengurangan;
                        kalkulatorsaya.operand1 = 20;
                        kalkulatorsaya.operand2 = 10;          
                        pengurangan=kalkulatorsaya.operand1-kalkulatorsaya.operand2;
                        System.out.println("Pengurangan : 20+10 ="+ pengurangan);
                        kalkulatorsaya.setPengurangan(20,10);
                        pengurangan = kalkulatorsaya.pengurangan();
                        System.out.println("Pengurangan = " + pengurangan);
                        }
}




Segitiga Bintang

public class bintang
{
            public static void cetakbintang()
            {
            int a, b;

            for(a=0;a<6;a++)
            {
                        System.out.println();
                        for(b=a;b<6;b++)
                        {
                                    System.out.print("*");
                        }
            }
            }
            public static void main (String[] args)
            {
                        System.out.println("SEGITIGA BINTANG BERNILAI 4");
                        System.out.println();
                        cetakbintang();
                        System.out.println("\n");
            }
}



Object Oriented Programming (OOP)
SEJARAH OOP
Konsep OOP dimulai pertengahan 1960-an dengan sebuah bahasa programSIMULASMALLTALK. Meskipun developer software tidak secara intensif mengembangkan OOP, tetapi metodologi object-oriented tetap digunakan sampai sekarang. kemudian dilanjutkan di era 70-an dengan Pada pertengahan 80-an, bahasa OOP seperti C++ dan Eifle menjadi popular diantara programmer komputer. Popularitas OOP berlanjut pada tahun 90-an, banyak pengembang perangkat lunak menggunakan konsep OOP seperti yang dilakukan pada Java dan kemudian PHP yang menjadi popular sekarang. Di tahun 2002, versi terakhir dari Visual Studio, Microsoft-pun ikut memperkenalkan bahasa OOP baru yaitu C#(dibaca C-sharp) serta penyempurnaan Visual Basic 6.0 yang tidak mendukung OOP menjadi VB.NET sebagai
bahasa pemrograman berorientasi objek.
Pengertian Object Oriented Programming (OOP)
Pemrograman berorientasi Objek yang dalam istilah Inggris disebut sebagai Object Oriented Programming (disingkat OOP) adalah salah satu pendekatan pemrograman atau paradigma untuk pengembangan / development suatu perangkat lunak komputer dimana dalam struktur perangkat lunak tersebut didasarkan kepada interaksi objek dalam penyelesaian suatu proses / tugas. Jika kita mencoba melihat bagaimana tugas disekitar kita diselesaikan, kita akan mengetahui bahwa kita berinteraksi dalam sebuah object-oriented world. Jika akan bepergian kita pasti berinteraksi dengan objek mobil. Sebagai sebuah objek, mobil berisi objek-objek lain yang berinteraksi untuk melakukan tugasnya membawa kita.
Pemrograman ini mempertinggi kualitas dan produktifitas pengembangan software. Program pengembangannya dilakukan dengan pendekatan building block. Setiap block, disebut object, bersifat independen dan mampu berjalan sendiri atau saling kunci dengan object lain dengan mudah dan otomatis. Object-object berinteraksi dengan saling memberikan informasi satu terhadap yang lainnya. Masing-masing object harus berisikan informasi mengenai dirinya sendiri (encapsulation) dan object yang dapat dikaitkan (inheritan).
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam 
teknik piranti lunakskala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.
KARAKTERISTIK OOP
Pemrograman orientasi-objek menekankan konsep berikut:
·         · kelas — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh ‘class of dog’ adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object.Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
·         · Objek – membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputerobjek merupakan dasar dari modularitas danstruktur dalam sebuah program komputer berorientasi objek.
·         · Abstraksi – Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari “pelaku” abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
·         · Enkapsulasi – Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
·         · Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan “gerak cepat”, dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
·         · Inheritas- Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada – objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
·         · Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
Bahasa pemrograman yang mendukung OOP:
1. Java
OOP
 (Object Oriented Programming – Pemrogram Berorientasi Objek) yang artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis oebjek secara murni. Semua tipe data diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun.
Pascal adalah bahasa pemrograman yang pertama kali di buat oleh ProfesorNiklaus Wirth, seorang anggota International Federation of Information Processing (IFIP) pada tahun 1971. Dengan mengambil nama dari matematikawan Perancis,Blaise Pascal, yang pertama kali menciptakan mesin penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini sebagai alat bantu untuk mengajarkan konsep pemrograman komputer kepada mahasiswanya. Selain itu, Profesor Niklaus Wirth membuat Pascal juga untuk melengkapi kekurangan-kekurangan bahasa pemrograman yang ada pada saat itu.
3. C++
C++ adalah salah satu 
bahasa pemrograman komputer. Dibuat pada tahun1980-an oleh Bell Labs (Bjarne Stroustrup) sebagai pengembangan dari Bahasa pemrograman C. Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (Object Oriented Programming).
4. Microsoft Visual Basic .NET
Microsoft Visual Basic .NET adalah sebuah alat untuk mengembangkan dan membangun aplikasi yang bergerak di atas sistem 
.NET Framework, dengan menggunakan bahasa BASIC. Dengan menggunakan alat ini, para programmerdapat membangun aplikasi Windows Forms, Aplikasi web berbasis ASP.NET, dan juga aplikasi command-line. Alat ini dapat diperoleh secara terpisah dari beberapa produk lainnya (seperti Microsoft Visual C++Visual C#, atau Visual J#), atau juga dapat diperoleh secara terpadu dalam Microsoft Visual Studio .NET. Bahasa Visual Basic .NET sendiri menganut paradigma bahasa pemrograman berorientasi objek yang dapat dilihat sebagai evolusi dari Microsoft Visual Basicversi sebelumnya yang diimplementasikan di atas .NET Framework. Peluncurannya mengundang kontroversi, mengingat banyak sekali perubahan yang dilakukan oleh Microsoft, dan versi baru ini tidak kompatibel dengan versi terdahulu.
5. Ruby
Ruby adalah 
bahasa pemrograman scripting yang berorientasi obyek. Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa-bahasa pemrograman scripting yang ada di dunia. Ruby ditulis dengan bahasa pemrograman C dengan kemampuan dasar seperti Perl dan Python.
6. Python
Python adalah 
bahasa pemrograman model skrip (scripting language) yang berorientasi obyek. Python dapat digunakan untuk berbagai keperluan pengembangan perangkat lunak dan dapat berjalan di berbagai platform sistem operasi
7. PHP
PHP adalah 
bahasa pemrograman script yang paling banyak dipakai saat ini. PHP banyak dipakai untuk memrogram situs web dinamis, walaupun tidak tertutup kemungkinan digunakan untuk pemakaian lain
8.  C# adalah Java versi Microsoft, sebuah bahasa multi flatform yang didesain untuk bisa berjalan di berbagai mesin. C# adalah pemrograman berorientasi Object (OOP). C# memiliki kekuatan
bahasa C++ dan portabilitas seperti Java.
9. Delphi
Delphi adalah sebuah 
bahasa pemrograman dan lingkungan pengembanganperangkat lunak. Produk ini dikembangkan oleh Borland (sebelumnya dikenal sebagai Inprise). Bahasa Delphi, yang sebelumnya dikenal sebagai object pascal(pascal dengan ekstensi pemrograman berorientasi objek (PBO/OOP)) pada mulanya ditujukan hanya untuk Microsoft Windows, namun saat ini telah mampu digunakan untuk mengembangkan aplikasi untuk Linux dan Microsoft .NETframework (lihat di bawah). Dengan menggunakan Free Pascal yang merupakan proyek opensource, bahasa ini dapat pula digunakan untuk membuat program yang berjalan di sistem operasi Mac OS X dan Windows CE
J2EE (JAVA 2 ENTERPRISE EDITION)
J2EE  adalah  kelompok  dari  beberapa  API  (Application  Programming Interface)  dari  Java  dan teknologi  selain  Java.  J2EE  dirancang  untuk  membuat  aplikasi  yang  rumit.  J2EE  sering  dianggap  sebagai  middle-ware atau teknologi yang berjalan di server, namun sebenarnya J2EE  tidak hanya terbatas untuk itu. Faktanya J2EE juga mencakup teknologi  yang dapat digunakan di semua lapisan dari sebuah sistem informasi.
Implementasi J2EE menyediakan kelas dasar dan API dari Java yang  mendukung  pengembangan dan  rutin  standard  untuk  aplikasi  client  maupun server, termasuk aplikasi yang berjalan di web browser.
J2SE (JAVA 2 SECOND EDITION)
J2SE  adalah  inti/  dasar  dari  bahasa  pemrograman  Java.  JDK  (Java Development  Kit)  adalah salah  satu  tool  dari  J2SE  untuk  mengkom- pilasi  dan  menjalankan  program  Java.  Tool  J2SE  yang  salah  satunya  adalah  JDK  1.5  dapat  diunduh  pada  http://java.sun.com/j2se/,  dimana  JDK merupakan tool open source dari Sun.
 J2ME (JAVA 2 MICRO EDITION)
J2ME  adalah  lingkungan  pengembangan  yang  dirancang  untuk  mele-takan perangkat lunak Java pada barang elektronik beserta perangkat  pendukungnya.  Pada  J2ME,  jika  perangkat  lunak berfungsi  baik  pada  sebuah perangkat, maka belum tentu juga berfungsi baik pada perang- kat yang lainnya. J2ME  membawa  Java  ke  dunia  informasi,  komunikasi,  dan  perangkat  komputasi selain perangkat komputer desktop yang biasanya lebih kecil  dibandingkan  perangkat  komputer  desktop.  J2ME  biasa  digunakan  pada  telepon  selular,  pager,  personal  digital  assistants  (PDA)  dan  sejenisnya.  J2ME  adalah  bagian  dari  J2SE,  karena  itu  tidak  semua  librabry  yang  ada pada J2SE dapat digunakan pada J2ME. Tetapi J2ME mempunyai  beberapa library khusus yang tidak dimiliki J2SE.
Teknologi  J2ME  juga  memiliki  beberapa  keterbatasan,  terutama  jika  diaplikasikan  pada  ponsel. J2ME  sangat  tergantung  pada  perangkat  (device)  yang  digunakan,  bisa  dari  segi  merek  ponsel dan  dukungan  terhadap  teknologi  J2ME.  Misalnya,  jika  sebuah  ponsel  tidak  memiliki kamera, maka jelas J2ME pada ponsel tersebut tidak dapat mengakses kamera.  Keterbatasan  lainnya  adalah pada  ukuran  aplikasi,  karena memori pada ponsel sangat terbatas. Sebagian ponsel tidak mengijinkan aplikasi J2ME menulis pada file, karena alasan keamanan.
Configuration  merupakan  Java  Library  minimum  dan  kemampuan yang dimiliki oleh para pengembang J2ME, maksudnya adalah sebuah  moblile device dengan kemampuan Java akan dioptimalkan agar sesuai. Configuration hanyalah mengatur hal-hal tentang kesamaan sehingga dapat  dijadikan  ukuran  kesesuaian  antar  device.  Misalnya  sebuah lampu sepeda dapat digunakan oleh berjenis-jenis sepeda.
Dalam J2ME telah didefinisikan dua buah konfigurasi yaitu :
CLDC (Connected Limited Device Configuration) Untuk perangkat kecil. 
CDC (Connected Device Configuration) Untuk perangkat yang lebih besar.
Profile  berbeda  dengan  configuration,  profile  membahas  sesuatu yang  spesifik  untuk  sebuah  perangkat.  Sebagai  contoh  misalnya, sebuah  sepeda  dengan  merek  tertentu  tentu  mempunyai  ciri  spesifik dari sepeda lainnya.
Dalam J2ME terdapat dua buah profile yaitu MIDP (Mobile Information Device   Profile)   dan Foundation   Profile.   Keterhubungan   antara configuration  dan  profile  yang  ada  pada  J2ME  beserta  jenis  mesin
virtualnya dapat dilihat  dibawah ini.
Aplikasi J2ME             Aplikasi J2 ME          Applet/ Aplikasi
(MIDlet)                               CVM                                   J2SE
KVM                                  Foundation                         JVM
 MDP                                     Profile                             J2SE
CLDC                                       CDC
CLDC  (Connected  Limited  Device  Configuration) adalah perangkat dasar dari J2ME berupa library dan API yang diimplementasikan pada J2ME,  seperti  yang  digunakan  pada  telepon  selular,  pager  dan  PDA. Perangkat  tersebut  sangat  terbatas  pada  memori,  sumber  daya  dan kemampuan memproses.
 AMP C (Pengenalan Java)
 Spesifikasi CLDC pada J2ME adalah spesifikasi minimal dari package, kelas, dan sebagian fungsi JVM yang dikurangi agar dapat diimplemen-tasikan dengan keterbatasan sumber daya pada alat-alat tersebut. JVM yang digunakan disebut KVM (Kilobyte Virtual Machine). CDC   (Connected   Device   Configuration)   merupakan   komunitas proses  pada  Java  yang  memiliki  standardisasi.  CDC terdiri  dari  virtual machine  dan  library  dasar  untuk  dipergunakan  pada  profile  industri. Implementasi CDC pada J2ME adalah source code yang menyediakan sambungan  dengan  macam-macam  platform.  Perbandingan  antara CLDC dengan CDC sebagai berikut :
CLDC
Mengimplementasikan  seba gian dari J2SE
JVM yang digunakan adalah KVM
Digunakan  pada  perangkat genggam  (handphone,  two-way pager, dan PDA) denga memori terbatas antara 160-512KB
Prosessor : 16/ 32 bit
CDC
Mengimplementasikan   selu-ruh fitur J2SE
JVM yang digunakan adalah CVM
Digunakan  pada  perangkat genggam (internet TV, Nokia communicator,  car  TV)  dgn memori minimal 2MB
Prosessor : 32 bitMIDP  (Mobile  Information  Device  Profile)  adakal  spesifikasi  untuk sebuah profil  J2ME.  MIDP  memiliki  lapisan  di  atas  CLDC,  API  tam-bahan untuk daur hidup aplikasi, antarmuka, jaringan, dan penyimpan-an persisten.
Pada  saat  ini  terdapat  MIDP  1.0  dan  MIDP  2.0,  fitur  tambahan  pada MIDP  2.0  adalah  terdapat  API  untuk  multimedia,  terdapat  dukungan memainkan tone, tone sequence, dan file WAV walaupun tanpa adanya Mobile Media API (MMAPI). KVM  (Kilobyte  Virtual  Machine)  adalah  paket  JVM  yang  dirancang untuk  perangkat  yang  kecil.  KVM  mendukung  sebagian  dari  fitur-fitur JVM, tidak mendukung operasi floating-point dan finalisasi objek. KVM diimplementasikan  dengan  menggunakan  C,  sehingga  sangat  mudah beradaptasi pada tipe platform yang berbeda
 CVM  (C-Virtual  Machine)  adalah  paket  JVM  yang  digunakan  pada CDC.  CVM  mempunyai seluruh  fitur-fitur  dari  virtual  machine  yang  dirancang  untuk  perangkat  yang  memerlukan  fitur-fitur  Java  2  Virtual Machine.   
 AMP C (Pengenalan Java)
MIDlet adalah aplikasi yang ditulis untuk MIDP. Aplikasi MIDlet adalah bagian  dari  kelas  javax.microedition.midlet.  MIDlet  yang  didefinisikan pada MIDP. MIDlet berupa sebuah kelas abstrak yang merupakan sub kelas  dari  bentuk  dasar  aplikasi  sehingga  antaramuka antara  aplikasi J2ME dan aplikasi manajemen pada perangkat dapat terbentuk.
 JAD (Java Application Descriptor) digunakan untuk mendeskripsikan isi  aplikasi  untuk  keperluan  pemetaan.  File  JAD  bersisi  deskripsi  file JAR  (Java  Archive)  dan  pemetaan  atribut  MIDlet,  sedangkan  file  JAR berisi kumpulan kelas dan resource. OTA (Over The Air) mengacu pada beberapa teknologi jaringan tanpa kabel.  Dengan  menggunakan  OTA,  provider  MIDlet  dapat  menginstal MIDlet  pada  web  server  dan  menyediakan  link  untuk  mengunduh  via  WAP atau internet microbrowser.
J2ME  WTK  (J2ME  Wireless  Tool  Kit) adalah alat yang menyediakan lingkungan emulator,dokumentasi, beserta contoh-contoh aplikasi Java untuk  perangkat  kecil  (small  device).  J2ME  WTK  berbasiskan  pada CLDC dan MIDP. J2ME WTK adalah program yang meniru kerja ponsel yang mendukung MIDP atau yang biasa disebut emulator. Oleh karena itu,  belum  tentu  MIDlet  yang  berjalan  di  emulator  juga  berjalan  pada ponsel  yang  sebenarnya,  karena  juga  tergantung pada  kemampuan dan kapasitas ponsel yang digunakan.
 Input Coding
 /*----------------
Nama File : Latihan3.java
Author : Suroso Selalu Tersenyum
------------------*/
import java.io.*;
class Latihan3
{
public static void main(String[] args)
{
String kata="";
boolean akhir=false;
int huruf;
System.out.println("****************************************");
System.out.println(" STMIK NUSA   MANDIRI");
System.out.println("****************************************");
System.out.println("Masukan Nama:");
while(!akhir)
{
try
{
huruf=System.in.read();
if(huruf <-3|| huruf=='\n')
akhir=true;
kata=kata+(char) huruf;
}
catch (IOException e)
{
System.err.println("Error");
akhir=true;
}
}
System.out.println("Masukan Nama="+ kata);
}
}

Completed Program
--------------------Configuration: <Default>--------------------
****************************************
    STMIK   NUSA   MANDIRI
****************************************
Masukan Nama:
suroso selalu tersenyum
Masukan Nama=suroso selalu tersenyum


Process completed.