Showing posts with label Pemrograman. Show all posts
Showing posts with label Pemrograman. Show all posts

Monday, January 16, 2012

Pengertian Pointer

Dalam ilmu komputer, pointer adalah tipe data bagi bahasa pemrograman yang nilainya mengacu untuk menunjuk langsung nilai lain yang tersimpan di tempat lain (variabel) di dalam suatu memori komputer dengan menggunakan alamat yang ada. Untuk bahasa pemrograman tingkat tinggi, pointer secara efektif dapat mengambil tempat pada general purpose registers yang ada pada bahasa tingkat rendah seperti bahasa assembly apabila memori masih tersedia. 

Pointer adalah implementasi sederhana, lebih konkretnya yaitu tentang tipe data referensi yang lebih abstrak. Beberapa jenis bahasa mendukung pointer, walaupun ada yang memiliki lebih banyak pembatasan penggunaannya dari pada yang lain. 

Sebagai analoginya, sebuah nomor halaman yang ada pada buku dapat dianggap sebagai pointer ke halaman yang sesuai, dan dereferencing pada pointer akan dilakukan dengan membalik ke halaman dengan nomor halaman yang diberikan. 

Pointer dapat meningkatkan kinerja data secara signifikan agar operasi berulang seperti traversing string, tabel lookup, tabel kontrol dan struktur pohon. Secara khusus, sering jauh lebih efisien dalam penggunaan waktu dan space untuk pointer dari pada menggunakan variable tipe data biasa. 

Pointer juga digunakan untuk menyimpan alamat dari titik masuk untuk memanggil subrutin dalam pemrograman prosedural dan untuk run-time penghubung ke dynamic link libraries (DLL). Dalam pemrograman berorientasi objek, pointer ke fungsi yang digunakan untuk mengikat/menjilid method, ini sering disebut tabel method virtual.

Sementara ini "pointer" telah digunakan untuk merujuk pada referensi yang ada pada umumnya, hal ini juga baik digunakan untuk struktur data yang secara eksplisit memungkinkan antar muka (interface) pointer untuk dimanipulasi (secara aritmetik melalui aritmetik pointer) sebagai alamat memori. Karena pointer memungkinkan akses yang dilindungi maupun tidak dilindungi ke memori yang dituju. 

Pointer primitif adalah pointer sering disimpan dalam format yang sama dengan integer. Namun, pada saat untuk dereference atau "mencari" pointer yang nilainya tidak pernah menjadi alamat memori yang valid akan menyebabkan program menjadi crash. 

Deskripsi Formal: 
Dalam ilmu komputer, pointer adalah termasuk tipe data macam referensi. Sebuah data primitive adalah setiap datum yang dapat dibaca dari atau ditulis ke memori komputer menggunakan satu akses memori (misalnya, kedua byte dan kata (word) yang primitif). 


Sebuah data agregat (aggregate) adalah data primitif yang logis berdekatan di dalam memori dan yang dipandang secara kolektif sebagai satu datum (misalnya, agregat bisa saja 3 byte logis berdekatan, maka nilai-nilai itu lah yang mewakili 3 koordinat titik di dalam ruang memori), ketika seluruh agregat yang terdiri dari jenis primitive yang sama, agregat dapat disebut sabagai sebuah array (larik), dalam arti, multi-byte primitif adalah array dari byte.

Dalam konteks definisi ini, byte adalah primitif terkecil, masing-masing menentukan alamat memori byte yang berbeda. Alamat memori dari byte pertama pada sebuah datum dianggap sebagai alamat memori (atau base alamat memori) dari seluruh datum. 

Sebuah pointer memori adalah primitive, nilai pointer itu digunakan sebagai alamat memori dan disebut sebagai pointer petunjuk ke alamat memori. Hal ini juga disebut bahwa pointer menunjuk ke datum [yang ada dalam memori] ketika nilai pointer berupa alamat memori datum itu.

Secara lebih umumnya, pointer adalah jenis data referensi, dan agar memperoleh  pointer dereference maka datum pointer disimpan di lokasi yang berbeda di dalam memori. Fitur yang membedakan pointer dengan jenis referensi lain yaitu nilai pointer yang dimaksud  dianggap sebagai alamat memori, yang merupakan konsep 'tingkat rendah'. 

Saat membuat struktur data seperti daftar, deret dan percabangan, perlu memiliki pointer untuk membantu mengelola bagaimana struktur dapat diimplementasikan dan dikendalikan. Contoh umum dari pointer adalah start pointer, end pointer, dan stack pointer. Pointer ini dapat menjadi absolute (alamat fisik yang sebenarnya atau alamat virtual di memori virtual) atau relative (sebuah offset dari alamat awal absolute ("dasar") yang biasanya menggunakan bit yang lebih sedikit dari pada alamat lengkap, tetapi biasanya juga akan membutuhkan satu tambahan operasi aritmatika untuk menyelesaikannya).

Dua byte offset, berisi 16-bit unsigned integer, dapat digunakan untuk menyediakan pengalamatan relative sampai dengan 64 kilobyte struktur data. Secara umum, meskipun, skema seperti itu banyak masalah, dan untuk kemudahan bagi programmer maka ruang alamat datar biasanya lebih disukai.

Sebuah byte offset, seperti nilai ASCII karakter heksadesimal dapat digunakan untuk menunjuk nilai integer alternatif dalam array. Dengan cara ini, karakter dapat sangat efisien diterjemahkan dari 'data mentah' ke indeks sekuensial dapat digunakan dan kemudian dituju ke alamat absolut tanpa menggunakan tabel lookup. 

Digunakan dalam mengontrol tabel 
Kontrol tabel digunakan untuk mengontrol aliran program (program flow), biasanya membuat ekstensif menggunakan pointer. Pointer biasanya tertanam dalam sebuah entry tabel. Misalnya, digunakan untuk menyimpan entry point bagi subrutin yang akan dijalankan, dan berdasarkan kondisi tertentu yang didefinisikan dalam entri tabel yang sama. 

Namun pointer  hanya dapat berupa indeks untuk memisahkan data yang lain tetapi terikat, tabel terdiri dari suatu array dari alamat yang aktual atau alamat sendiri (tergantung pada struktur bahasa pemrograman yang tersedia). 

Pointer juga dapat digunakan untuk titik (kembali) ke entri tabel sebelumnya (seperti dalam pengolahan loop) atau maju melewati beberapa entri tabel (seperti pada switch atau "awal" keluar dari loop). 

Abstraksi pointer yang sangat tipis di atas merupakan kemampuan pengalamatan yang dikembangkan dengan arsitektur paling modern. Dalam skema sederhana, alamat atau indeks numerik, ditugaskan bagi setiap unit memori dalam sistem, di mana unit ini biasanya baik byte atau kata (word), secara efektif dapat mengubah semua memori ke array yang sangat besar. Kemudian, jika kita memiliki suatu alamat, sistem itu menyediakan operasi untuk mengambil nilai yang tersimpan dalam unit memori pada alamat (biasanya menggunakan register tujuan umum di dalam mesin yang digunakan). 

Dalam kasus biasa, pointer itu cukup besar untuk menampung alamat lebih dari beberapa unit memori yang berada di dalam sistem. Ini memperkenalkan kemungkinan bahwa program mungkin berusaha untuk mengakses alamat bila tidak ada unit memori, baik karena memori tidak cukup dipasang (yaitu di luar jangkauan memori yang tersedia) atau arsitektur tidak mendukung alamat tersebut. Kasus pertama mungkin, dalam platform tertentu seperti arsitektur Intel x86, disebut kesalahan segmentasi (segfault). Kasus kedua adalah mungkin dalam implementasi pada AMD64, di mana pointer yang memiliki panjang 64 bit dan alamat hanya memperpanjang sampai 48 bit. Disini pointer harus sesuai dengan aturan-aturan tertentu (alamat kanonik), jadi jika pointer nonkanonik adalah dereferenced, akan berakibat prosesor melakukan kesalahan perlindungan umum (general protection fault).

Di sisi lain, beberapa sistem memiliki lebih banyak unit memori dari pada alamat. Dalam hal ini, skema yang lebih kompleks seperti segmentasi memori atau paging dikelola untuk menggunakan bagian yang berbeda dari memori pada waktu yang berbeda pula. Inkarnasi terakhir dari arsitektur x86 mendukung hingga 36 bit dari alamat memori fisik, yang dipetakan ke ruang alamat 32-bit linear melalui mekanisme paging PAE. Jadi, hanya 1 / 16 dari total memori yang mungkin dapat diakses pada suatu waktu. Contoh lain dalam kelompok komputer yang sama adalah 16-bit dalam keadaan terlindungi dari prosesor 80286 yang meskipun mempunyai 16 MiB memori fisik, dapat mengakses hingga 1 GB dari memori virtual, namun kombinasi dari 16-bit alamat dan segmen register dapat mengakses lebih dari 64 KiB dalam satu struktur data rumit. Beberapa pembatasan aritmetik pointer ANSI mungkin memiliki model memori tersegmentasi dari kelompok prosesor ini.

Dalam rangka untuk mengembangkan interface yang konsisten, beberapa arsitektur menyediakan I / O yang dipetakan ke dalam memori, yang memungkinkan beberapa alamat untuk menuju ke unit memori sedangkan yang lain mengacu pada register perangkat perangkat lain di komputer. Ada konsep analog seperti file offset, indeks array, dan referensi object remote yang melayani beberapa tujuan yang sama sebagai alamat untuk jenis object lainnya. 

Pointer secara langsung didukung tanpa pembatasan dalam bahasa seperti PL / I, C, C++, Pascal, dan kebanyakan bahasa perakitan. Ketika berhadapan dengan array, operasi pencarian kritis biasanya perhitungan alamat  disebut tahap perhitungan alamat yang melibatkan pembentukan sebuah array. 

Dalam struktur data lain, seperti daftar terhubung (linked list), pointer digunakan sebagai referensi secara eksplisit yang mengikat salah satu bagian dari struktur yang lain. Pointer digunakan untuk menumpangi parameter bagi referensi. Hal ini berguna jika programmer menginginkan modifikasi fungsi untuk parameter, agar dapat dilihat pada pemanggilan fungsi itu. Ini juga berguna untuk menampilkan nilai hasil perkalian dari dalam fungsi yang telah dibuat.

Pointer juga dapat digunakan untuk mengalokasikan/ALLOCATE atau DEALLOCATE variabel dinamis dan array dalam memori. Karena variable akan sering menyebabkan memori penuh setelah selasai ngerjakan perintah, itu dapat menjadi pemborosan memori apabila kita menyimpannya terus-menerus, dan oleh karena itu praktik yang baik untuk DEALLOCATE itu (menggunakan referensi pointer asli) ketika tidak diperlukan lagi. Kegagalan pada DEALLOCATE dapat mengakibatkan kehabisan memori (dimana memori bebas yang tersedia akan secara bertahap berkurang atau dalam kasus yang parah, dengan secara cepat akan penuh).

Friday, January 13, 2012

Sejarah C#

C# (diucapkan see sharp) adalah bahasa pemrograman multi-paradigma meliputi Strong typing, imperative, declarative, Functional, generic, object-oriented(class-based), dan disiplin pemrograman component-oriented. Ini dikembangkan oleh Microsoft dalam inisiatif NET. 



C # adalah salah satu bahasa pemrograman yang dirancang untuk Infrastruktur Common Language. Perancangan C # adalah dimaksudkan untuk menjadi sederhana, modern, tujuan umum, bahasa pemrograman berorientasi objek. Tim pengembangan dipimpin oleh Anders Hejlsberg. Versi terbarunya adalah C # 4.0, yang dirilis pada tanggal 12 April 2010.





Selama pengembangan Framework. NET, Libray class awalnya ditulis menggunakan managed code compiler system disebut juga Simple Managed C (SMC). Pada Januari 1999, Anders Hejlsberg membentuk tim untuk membangun sebuah bahasa baru pada saat itu disebut Cool, yang berdiri untuk "C-seperti Bahasa Berorientasi Obyek". Microsoft telah memutuskan untuk mempertahankan nama "Cool" sebagai nama akhir dari bahasa ini, tetapi memilih untuk tidak melakukannya untuk alasan merek dagang. Pada saat proyek .NET diumumkan pada Konferensi Pengembang Profesional Juli 2000, bahasa Cool telah diubah namanya menjadi C #, dan Librari class dan ASP.NET runtime telah porting ke C#.

C# desainer utama dan arsitek utama di Microsoft yaitu Anders Hejlsberg, yang sebelumnya pernah terlibat dengan desain dari Turbo Pascal, Embarcadero Delphi (sebelumnya CodeGear Delphi dan Borland Delphi), dan Visual J + +. Dalam wawancara dan makalah teknis ia telah menyatakan bahwa kelemahan dalam bahasa pemrograman yang paling utama (misalnya C + +, Java, Delphi, dan Smalltalk) mendorong fundamental dari Common Language Runtime (CLR) yang pada gilirannya, mendorong desain dari bahasa C # itu sendiri.

James Gosling, yang menciptakan bahasa pemrograman Java pada tahun 1994, dan Bill Joy, co-pendiri dari Sun Microsystems, pencetus Java, disebut C # merupakan "tiruan" dari Java; Gosling lebih jauh menyatakan bahwa "[C# is] sort of Java with reliability, productivity and security deleted." Klaus Kreft dan Angelika Langer (penulis buku C++ Streams ) dinyatakan dalam sebuah posting blog bahwa "Java dan C # adalah bahasa pemrograman hampir identik. Ada pengulangan Membosankan yang tidak memiliki inovasi, " " Hampir tidak ada orang akan mengklaim bahwa Java atau C # adalah bahasa pemrograman revolusioner yang mengubah cara kita menulis program," dan "C # meminjam banyak dari Java -. dan sebaliknya Sekarang bahwa C # mendukung boxing dan Unboxing, kita akan memiliki fitur yang sangat serupa di Jawa. " Anders Hejlsberg telah berpendapat bahwa C # adalah "bukan sebuah clone Java" dan "lebih dekat ke C + +" dalam desain. 

Sejak rilis C # 2.0 pada bulan November 2005, C # dan bahasa Java telah berevolusi di lintasan semakin divergen, menjadi agak kurang sama. Salah satu keberangkatan besar pertama datang dengan penambahan generik untuk kedua bahasa, dengan implementasi yang sangat berbeda. C # membuat penggunaan reifikasi untuk menyediakan "Class" object generik yang dapat digunakan seperti class lain, dengan generasi kode dilakukan di Class-load time. Sebaliknya, Java generik adalah dasarnya fitur sintaks bahasa dan mereka tidak mempengaruhi kode byte yang dihasilkan, karena compiler melakukan penghapusan type erasure pada generics type information setelah diverifikasi kebenarannya.

Selanjutnya, C # telah menambahkan fitur-fitur utama untuk mengakomodasi fungsional-gaya pemrograman, yang berpuncak pada ekstensi mereka LINQ dirilis dengan C # 3.0 dan kerangka pendukungnya ekspresi lambda, ekstensi method, dan anonymous classes. Fitur-fitur ini membolehkan programmer C # untuk menggunakan teknik pemrograman fungsional, seperti closures, ketika berguna bagi aplikasi mereka. Ekstensi LINQ dan import fungsional membantu pengembang mengurangi jumlah kode "boilerplate" yang disertakan dalam tugas-tugas umum seperti query database, parsing file xml, atau mencari melalui struktur data, pergeseran penekanan ke logika program yang sebenarnya untuk membantu meningkatkan kemudahan untuk dibaca dan perawatan. 

C# used to have a mascot called Andy (named after Anders Hejlsberg). It was retired on 29 Jan 2004.
C# was originally submitted for review to the ISO subcommittee JTC 1/SC 22 under ISO/IEC 23270:2003, which is now withdrawn. It was then approved under ISO/IEC 23270:2006.

sumber: www.wikipedia.org

Thursday, January 12, 2012

Sejarah Java



Java adalah bahasa pemrograman yang awalnya dikembangkan oleh James Gosling di Sun Microsystems (yang sejak bergabung ke Oracle Corporation) dan dirilis pada tahun 1995 sebagai komponen inti dari platform JavaSun Microsystems. Banyak Syntax Bahasa Java ini yang berasal dari C dan C + + tetapi memiliki model objek yang sederhana dan lebih cenderung pada fasilitas tingkat-rendah (bahasa pemrograman tingkat-rendah). Aplikasi Java biasanya dikompilasi untuk bytecode (class file) yang dapat berjalan pada Java Virtual Machine(JVM) terlepas dari arsitektur komputer. Java memiliki karakteristik general-purpose, concurrent, class-based, object-oriented language yang khusus dirancang untuk beberapa penerapan yang dependensi. Hal ini dimaksudkan untuk memungkinkan pengembang aplikasi "tulis sekali, jalankan di mana saja," itu berarti bahwa kode yang berjalan pada satu platform tidak perlu di edit untuk berjalan pada platform yang lain. Java saat ini adalah salah satu bahasa pemrograman yang paling populer digunakan, terutama untuk client-server web aplikasi, dengan 10 juta pengguna yang telah ter catat.

Referensi Java compiler, virtual machines, dan class libraries yang asli adalah yang dikembangkan oleh Sun dari tahun 1995. Pada Mei 2007, sesuai dengan spesifikasi dari Java Community Process, Sun memberi lisensi kembali sebagian besar teknologi Java itu di bawah GNU GPL (General Public License). Lainnya juga telah mengembangkan implementasi alternatif dari teknologi milik Sun ini, seperti Kompilator GNU untuk Java dan GNU Classpath.

James Gosling, Mike Sheridan, dan Patrick Naughton memulai proyek bahasa Java pada bulan Juni 1991. Java pada awalnya didesain untuk televisi interaktif, tapi itu terlalu maju bagi industri televisi kabel digital pada saat itu. 

Bahasa ini awalnya disebut Oak, konon karena pada saat itu pohon Oak tumbuh di luar kantor Gosling, kemudian ia beralih dengan memberi nama Green, dan kemudian berganti nama Java, dari kopi Jawa, disebutkan untuk dikonsumsi dalam jumlah besar oleh pencipta bahasa ini.  Kita juga harus bangga, mungkin bukan hanya nama tetapi juga kasiat kopinya (Produk Jawa) yang masuk ketubuh Gosling. :D

Saat itu gosling pun bermaksud untuk mewujudkan sebuah mesin virtual dan sebuah bahasa yang dekat dengan gaya notasi C / C + +.

Sun Microsystems merilis implementasi publik pertama yaitu Java 1,0 pada tahun 1995. Mereka berjanji "Write Once, Run Anywhere" (WORA), mengembangkan tanpa biaya run-time pada platform populer. Cukup aman dan menampilkan keamanan yang dapat dikonfigurasi, ini memungkinkan jaringan dan akses file yang dibatasi. Sebagian besar Web browser segera masukkan kemampuan untuk menjalankan applet Java dalam halaman web, dan Java dengan cepat menjadi populer. 

Dengan munculnya Java 2 (dirilis awalnya sebagai J2SE 1,2 pada Desember 1998-1999), versi baru telah dibangun beberapa konfigurasi untuk berbagai jenis platform. Sebagai contoh, J2EE ditargetkan aplikasi perusahaan dan versi J2ME untuk aplikasi mobile (Mobile Java). J2SE dirancang untuk Edisi Standar. Pada tahun 2006, untuk tujuan pemasaran, Sun mengganti nama baru versi J2 menjadi Java EE, Java ME, dan Java SE.

Pada tahun 1997, Sun Microsystems mendatangi ISO / IEC JTC1 badan standar dan kemudian Internasional ECMA untuk meresmikan Java, tetapi segera menarik diri dari proses tersebut. Java tetap menjadi standar de facto, dikontrol melalui Java Community Process. Pada suatu waktu, Sun membuat sebagian besar Java implementasi yang tersedia tanpa biaya, meskipun status perangkat lunak berpemilik mereka. 

Sun menghasilkan pendapatan dari Java melalui penjualan lisensi untuk produk-produk khusus seperti Java Enterprise System. Sun membedakan antara Software Development Kit nya (SDK) dan Runtime Environment (JRE) (subset dari SDK); perbedaan utama melibatkan kurangnya JRE dari compiler, program utilitas, dan file header. Pada 13 November 2006, Sun telah meluncurkan banyak Java sebagai perangkat lunak bebas dan open source, Free and Open Source Software (FOSS), di bawah persyaratan dari GNU General Public License (GPL). Pada tanggal 8 Mei 2007, Sun menyelesaikan proses membuat semua kode inti Java tersedia di bawah perangkat lunak bebas / open source distribusi, selain dari sebagian kecil dari kode yang Sun tidak memegang hak cipta.

Wakil presiden Sun Rich Green mengatakan bahwa peran yang ideal Sun berkaitan dengan Java sebagai "pengabar injil." Setelah akuisisi Oracle Corporation dari Sun Microsystems pada 2009-2010, Oracle telah menggambarkan dirinya sebagai "steward of Java technology with a relentless commitment to fostering a community of participation and transparency" Perangkat lunak Java berjalan pada laptop ke pusat data, konsol game untuk superkomputer ilmiah. Ada 930 juta Java Runtime Environment di-download setiap tahun dan 3 miliar ponsel menjalankan aplikasi Java. Pada 2 April 2010, James Gosling mengundurkan diri dari Oracle.



Sejarah perkembangan versi Java
Bahasa Java telah mengalami beberapa perubahan sejak JDK 1,0 serta penambahan berbagai kelas dan paket ke perpustakaan standar. Sejak J2SE 1.4, evolusi dari bahasa Java telah diatur oleh Java Community Process (JCP), yang menggunakan Java Spesifikasi Requests (JSRs) untuk mengusulkan dan menentukan untuk penambahan dan perubahan pada platform Java. Bahasa ini ditentukan oleh Java Language Specification(JLS), perubahan pada JLS dikelola di bawah JSR 901.

Selain perubahan bahasa, perubahan dramatis lebih telah dilakukan untuk Java Class Library selama bertahun-tahun, yang telah berkembang dari beberapa ratus kelas di JDK 1,0 sampai lebih dari tiga ribu di J2SE 5. Seluruh API baru seperti Swing dan Java2D telah diperkenalkan dan banyak Class dan Method dari JDK 1.0 yang asli telah usang.

Beberapa program memungkinkan untuk konversi program Java (Java Class) dari satu versi platform Java ke yang lebih tua (misalnya Java 5.0 di-backporting ke 1.4). 


1. JDK 1.0 (23 Januari 1996)
Codename Oak. Rilis awal Versi stabil pertama adalah JDK 1.0.2. ini disebut Java 1. 

2. JDK 1.1 (19 Februari, 1997)
Tambahan: 
  • Suatu retooling luas model acara AWT 
  • Inner classes ditambahkan ke bahasa 
  • JavaBeans 
  • JDBC 
  • RMI 
  • Reflection yang Introspeksi saja, tidak ada modifikasi pada saat runtime itu mungkin. 
3. J2SE 1.2 (8 Desember 1998)
Codename Playground. Ini dan rilis selanjutnya sampai J2SE 5,0 dimana Java 2 dan nama versi "J2SE" (Java 2 Platform, Standard Edition) diganti JDK untuk membedakan platform dasar dari J2EE (Java 2 Platform, Enterprise Edition) dan J2ME (Java 2 Platform , Micro Edition). 
Tambahan utama meliputi:
  • strictfp keyword 
  • API swing grafis telah diintegrasikan ke dalam Class inti 
  • Sun JVM yang dilengkapi dengan compiler JIT untuk pertama kalinya 
  • Java Plug-in 
  • Java IDL, sebuah implementasi IDL untuk interoperabilitas CORBA 
  • Koleksi framework 

4. J2SE 1.3 (8 Mei 2000)
Codename Kestrel. Perubahan paling menonjol adalah:
  • HotSpot JVM termasuk (HotSpot JVM pertama kali dirilis pada bulan April, 1999 untuk J2SE 1.2 JVM) 
  • RMI adalah dimodifikasi untuk mendukung kompatibilitas opsional dengan CORBA 
  • JavaSound 
  • Java Penamaan dan Direktori Interface (JNDI) termasuk dalam perpustakaan inti (sebelumnya tersedia sebagai ekstensi) 
  • Java Platform Debugger Arsitektur (JPDA) 
  • Syntetic proxy classes 

5. J2SE 1.4 (6 Feb 2002)
Codename Merlin. Ini adalah rilis pertama dari platform Java yang dikembangkan di bawah Java Community Process sebagai JSR 59. 
Perubahan besar mencakup: 
  • Perubahan bahasa 
  • Assert keyword 
  • Perbaikan Library
  • Regular expressions model setelah ekspresi reguler Perl expressions 
  • Exeption chaining memungkinkan pengecualian untuk merangkum exception tingkat-bawah yang asli 
  • Internet Protocol versi 6 (IPv6) dukungannon-blocking IO (bernama NIO) (input / Output baru) 
  • Logging API 
  • Gambar I / O API untuk membaca dan meletakan gambar dalam format seperti JPEG dan PNG 
  • Meng-integrasikan XML parser dan XSLT prosesor (JAXP) 
  • Meng-integrasikan keamanan dan ekstensi Cryptography (JCE, JSSE, JAAS) 
  • Java Web Start disertakan (Java Web Start pertama kali dirilis pada bulan Maret, 2001 untuk J2SE 1.3) (Ditentukan dalam JSR 56.)Preferensi API (java.util.prefs) 

6. J2SE 5.0 (September 30, 2004)
Codename Tiger. Awalnya nomor 1,5, yang masih digunakan sebagai nomor versi internal. Versi ini dikembangkan di bawah JSR 176.
J2SE 5.0 memasuki nya akhir-hidup pada tanggal 8 April 2008 dan tidak lagi didukung oleh Sun pada 3 Nopember 2009 .
Tiger menambahkan sejumlah fitur bahasa baru yang signifikan: 
  • Generics: Menyediakan waktu kompilasi (static) safety type untuk koleksi dan menghilangkan kebutuhan untuk kebanyakan typecasts (type conversion). (Ditentukan oleh JSR 14.) 
  • Metadata: Juga disebut penjelasan; memungkinkan konstruksi bahasa seperti kelas dan metode yang harus ditandai dengan data tambahan, yang kemudian dapat diproses oleh metadata-sadar utilitas. (Ditentukan oleh JSR 175.) 
  • Autoboxing / unboxing: konversi otomatis antara tipe primitif (seperti int) dan kelas wrapper primitif (seperti Integer). (Ditentukan oleh JSR 201.) 
  • Enumerations: enum keyword menciptakan sebuah typesafe, memerintahkan daftar nilai (seperti Day.MONDAY, Day.TUESDAY, dll). Sebelumnya ini hanya dapat dicapai oleh non-bilangan bulat typesafe konstan atau kelas secara manual dibangun (enum typesafe pola).(Ditentukan oleh JSR 201.) 
  • Varargs: Parameter terakhir dari sebuah method sekarang dapat dideklarasikan menggunakan nama jenis diikuti oleh tiga titik (misalnya void drawtext(string... lines)). Dalam memanggil code sejumlah angka dari parameter jenis yang dapat digunakan dan mereka kemudian ditempatkan dalam array yang akan dilewatkan ke metode, atau sebagai alternatif kode panggilan dapat melewatkan sebuah array dari tipe tersebut. 
  • Enhance untuk setiap loop: untuk sintaks loop yang diperpanjang dengan sintaks khusus untuk iterasi setiap anggota baik array atau Iterable, seperti pada koleksi class standar, menggunakan konstruksi dalam bentuk: 
void displayWidgets (Iterable<Widget> widget) {

for (widget w: widgets) {

w.display();

}



Contoh iterasi ini atas Iterable Object widgets, menugaskan setiap item yang pada gilirannya untuk variabel w, dan kemudian memanggil Widget method display() untuk setiap item.

  • Perbaiki semantik sebelumnya yang rusak dari Java Memori Model, yang mendefinisikan bagaimana ancaman berinteraksi melalui memori. 
  • Static imports 
Ada juga perbaikan untuk library standar:
  1. Otomatis stub generasi pada objek RMI. 
  2. Swing: skinnable look and feel baru, yang disebut synth. 
  3. Utilitas concurrency dalam package java.util.concurrent. 
  4. Scanner class untuk parsing dari berbagai data input stream dan buffer. 
Java 5 adalah rilis terakhir dari Java untuk secara resmi mendukung Microsoft Windows 9x line (Windows 95, Windows 98, Windows ME). Secara tidak resmi, Java SE 6 Update 7 (1.6.0.7) adalah versi terakhir dari Java yang akan ditampilkan bekerja pada keluarga sistem operasi (OS).

7. Java SE 6 (11 Desember 2006)
Codename Mustang. Pada versi ini, Sun diganti nama "J2SE" dengan Java SE dan menghilangkan ".0" dari nomor versi. Penomoran internal untuk pengembang tetap 1.6.0. Versi ini dikembangkan di bawah JSR 270. Selama tahap pengembangan, baru dibangun termasuk perangkat tambahan dan perbaikan bug yang dirilis mingguan. Versi beta yang dirilis pada bulan Februari dan Juni 2006, mengarah ke rilis final yang terjadi pada tanggal 11 Desember 2006.
Perubahan besar disertakan dalam versi ini:
  • Dukungan untuk versi Win9x tua turunkan. Secara tidak resmi Java 6 Update 7 adalah rilis terakhir dari Java ditunjukkan untuk bekerja pada versi Windows. Hal ini diyakini terjadi karena perubahan besar dalam update 10. 
  • Dukungan Bahasa Scripting: Generic API untuk integrasi yang erat dengan bahasa scripting, dan built-in Mozilla javaScript Rhino 
  • Peningkatan kinerja yang dramatis untuk platform inti, dan Swing. 
  • Peningkatan Layanan Web dukungan melalui JAX-WS 
  • Dukungan JDBC 4.0. 
  • Java Compiler API: sebuah API yang memungkinkan program Java untuk memilih dan memanggil Compiler pemrograman Java. 
  • Upgrade dari JAXB ke versi 2.0: Termasuk integrasi Stax parser. 
  • Dukungan untuk penjelasan pluggable 
  • Banyak perbaikan GUI, seperti integrasi SwingWorker di dalam API, tabel pemilahan dan penyaringan, dan Swing double-buffering (menghilangkan efek wilayah abu-abu). 
  • Perbaikan JVM meliputi: Sinkronisasi dan Optimasi kinerja compiler, algoritma baru dan upgrade untuk algoritma pengumpulan sampah (gerbage collection) yang ada, dan kinerja aplikasi start-up. 
8. Java SE 7 (Juli 28, 2011)
Java 7 (Dolphin codename ) adalah sebuah update besar ke Java yang diluncurkan pada tanggal 7 Juli 2011 dan tersedia dibuat bagi para pengembang pada tanggal 28 Juli 2011. Masa perkembangannya diorganisir menjadi tiga belas milestone. Pada tanggal 18 Februari 2011, 13 milestone (milestone terakhir) yang tercapai . Rata-rata, 8 pengerjaan (yang umumnya termasuk perangkat tambahan dan perbaikan bug) yang dirilis per milestone. Daftar fitur di proyek OpenJDK 7 daftar banyak perubahan fitur.

Fitur tambahan untuk Java 7 meliputi: 
  • JVM dukungan untuk bahasa dinamis, berikut prototipe pekerjaan saat ini dilakukan pada Virtual Machine Multi Bahasa 
  • Compressed pointer 64-bit Tersedia di Java 6 dengan-XX: UseCompressedOops 
  • Perubahan kecil bahasa (dikelompokkan dalam sebuah proyek bernama Coin) : 
  1. String di switch 
  2. Manajemen sumber (source code) secara otomatis di try-statment 
  3. Peningkatan jenis inferensi untuk penciptaan generik 
  4. Metode varargs deklarasi sederhana 
  5. Literal bilangan Biner 
  6. Mengijinkan menggaris bawahi di literal numerik 
  7. Penangkapan beberapa tipe exception dan rethrowing exception dengan memeriksa tipe yang ditingkatkan 
  • Concurrency utilitas di bawah JSR 166 
  • File library I / O baru untuk meningkatkan kemandirian platform dan menambahkan dukungan untuk metadata dan link simbolik. Paket-paket baru java.nio.file dan java.nio.file.attribute 
  • Dukungan Library-level untuk algoritma kriptografi kurva elliptic 
  • Sebuah pipeline XRender untuk Java 2D, yang meningkatkan penanganan fitur khusus untuk GPU yang modern 
  • Platform API baru untuk grafis fitur awalnya direncanakan untuk rilis di Jawa versi 6u10 
  • Peningkatan Library-level dukungan untuk protokol jaringan baru, termasuk SCTP​​ dan Socket Direct Protokol 
  • Upstream update untuk XML dan Unicode 
Lambda (implementasi Java fungsi lambda), Jigsaw (implementasi Java module), dan bagian dari Java 7. Java 8 akan dirilis dengan fitur yang tersisa di musim panas 2013. 

9. Java 7 update 
Rencana Oracle mengeluarkan update untuk  Java 7 secara triwulanan 


RilisTanggal RilisKeteangan
Java SE 72011-07-07Awal rilis
Java SE 7 Update 12011-10-1820 perbaikan security, perbaikan bug lainnya 
Java SE 7 Update 22011-12-12perbaikan bug

10. Java SE 8
Java 8 diharapkan pada musim panas 2013 dan akan mencakup fitur minimal yang direncanakan untuk Java 7 tetapi kemudian ditangguhkan.
  • Modularisasi dari JDK di bawah Jigsaw Proyek 
  • Dukungan language-level untuk ekspresi lambda di bawah Proyek Lambda. Ada perdebatan yang sedang berlangsung dalam komunitas Java untuk menambahkan dukungan untuk ekspresi lambda. Sun kemudian. menyatakan bahwa ekspresi lambda akan dimasukkan di Java 8 dan meminta komunitas untuk memperbaiki fitur tersebut. 
  • Bagian dari Coin project yang tidak termasuk di Jawa 7 
  • Integrasi ketat dengan JavaFX. 

11. Java 9
Pada JavaOne 2011, Oracle membahas fitur yang mereka harapkan untuk memiliki di Java 9, termasuk dukungan yang lebih baik untuk tumpukan (stack) multi-gigabyte, integrasi kode asli yang lebih baik, dan self-tuning JVM.


sumber : www.wikipedia.org

Wednesday, August 5, 2009

Sejarah bahasa C

Awal pengembangan bahasa C terjadi di AT & T Bell Labs antara tahun 1969 dan 1973. C itu sendiri adalah bahasa pemrograman untuk tujuan umum. C juga terkait erat dengan operasi sistem UNIX yang juga dikembangkan menggunakan bahasa ini, baik sistem dan sebagian besar program yang berjalan. Namun, bahasa ini tidak terikat pada satu sistem operasi atau mesin dan meskipun telah disebut `` sistem bahasa pemrograman'' karena berguna untuk menulis compiler dan sistem operasi, dan telah digunakan sama baiknya untuk menulis program utama dalam domain yang berbeda.

Banyak dari ide-ide penting dalam C yang ada dari bahasa BCPL yang dikembangkan oleh Martin Richards. Banyak pengaruh BCPL pada C kemudian secara tidak langsung juga melalui bahasa B yang ditulis oleh Ken Thompson pada tahun 1970 untuk sistem UNIX yang pertama pada DEC PDP-7.

BCPL dan B adalah bahasa ''typeless" (tipe yang kurang beragam). Sebaliknya, C menyediakan berbagai tipe data. Jenis karakter fundamental, dan bilangan bulat (integer) beserta bilangan desimal (floating point) dari beberapa ukuran. Selain itu, ada hirarki tipe data turunan dibuat dengan pointer, array, struktur dan union. Ekspresi yaitu terbentuk dari operator dan operan; ekspresi apapun, termasuk tugas atau panggilan fungsi (function call), bisa menjadi pernyataan (statment). Pointer menyediakan untuk mechine-independent alamat aritmatika.

C menyediakan control-flow konstruksi dasar yang dibutuhkan untuk program yang terstruktur dengan baik: pengelompokan pernyataan (statment), pengambilan keputusan (if-else), pemilihan salah satu dari serangkaian nilai yang mungkin (switch), perulangan dengan tes terminasi di atas (while, for) atau di bagian bawah (do), dan keluar dari loop awal (break).

Fungsi dapat menghasilkan nilai-nilai dari jenis dasar, struktur, union, atau pointer. Fungsi apapun dapat dipangil secara rekursif. Variabel lokal biasanya "otomatis", atau dibuat baru dengan melibatkan masing-masing variabel tersebut. Fungsi definisi mungkin tidak bersarang tetapi variabel-variabel dapat dinyatakan dalam mode blok-terstruktur. Fungsi dari program C mungkin ada dalam file sumber terpisah yang dikompilasi secara terpisah. Cakupan variabel internal mungkin hanya untuk di dalam fungsi, tetapi cakupan variabel eksternal hanya diketahui dalam file sumber tunggal, atau terlihat untuk seluruh program.

Langkah preprocessing melakukan substitusi makro pada teks program, inklusi dari file sumber lain, dan kondisional kompilasi.

C adalah bahasa yang cenderung "low-level". Karakterisasi ini bukan merendahkan, itu hanya berarti bahwa C berkaitan dengan jenis yang sama objek yang kebanyakan komputer, yaitu karakter, angka, dan alamat. Ini dapat dikombinasikan dan berjalan dengan aritmatika dan operator logika diimplementasikan oleh mesin nyata.

Didalam C tidak ada operasi untuk menangani secara langsung dengan objek komposit seperti string karakter, set, list atau array. Tidak ada operasi yang memanipulasi seluruh array atau string, meskipun mungkin struktur disalin menjadi satu unit. Bahasa tidak mendefinisikan fasilitas alokasi penyimpanan lain dari definisi statis dan disiplin tetap disediakan oleh variabel  fungsi lokal, tidak ada tumpukan atau koleksi sampah (gerbage collection). Akhirnya, C itu sendiri tidak memberikan fasilitas input/output, tidak ada Read atau Write statment, dan file acces methods yang tersedia. Semua mekanisme tingkat tinggi harus disediakan dengan pemanggilan fungsi secara eksplisit. Kebanyakan C implementasi telah menyertakan koleksi standar yang rasional seperti halnya fungsi.

Demikian pula, C menawarkan hanya langsung, satu-benang aliran kontrol: tes, loop, pengelompokan, dan subprogram, tetapi tidak multiprogramming, operasi paralel, sinkronisasi, atau coroutines.

Pada tahun 1983, American National Standards Institute (ANSI) membentuk komite untukmemberikan definisi modern, komprehensif C. Definisi yang dihasilkan, standar ANSI, atau `` ANSIC'', telah selesai pada akhir tahun 1988. Sebagian besar fitur standar yang sudah didukung oleh modern compiler.

Standar didasarkan pada referensi manual asli. Bahasa ini relatif sedikit berubah, salah satu tujuan dari standar ini adalah untuk memastikan bahwa sebagian besar program yang ada tetap berlaku atau gagal, bahwa compiler dapat menghasilkan peringatan dari perilaku baru.

Bagi kebanyakan programmer, perubahan yang paling penting adalah sintaks baru untuk menyatakan dan mendefinisikan fungsi. Sebuah deklarasi fungsi sekarang dapat meliputi deskripsi argumen fungsi. perubahan definisi syntax agar cocok. Ini tambahan agar lebih mudah bagi compiler untuk mendeteksi kesalahan yang disebabkan oleh argumen tidak cocok.

Ada perubahan bahasa dari skala kecil yang lain. Struktur assignment dan enumeration, yang telah tersedia secara luas, dan kini resmi menjadi bagian dari bahasa C. Perhitungan floating-point sekarang bisa dilakukan dalam presisi tunggal.

Sebuah kontribusi kedua yang signifikan dari standar ini adalah definisi library untuk C. Menentukan fungsi untuk mengakses sistem operasi (misalnya, untuk membaca dan menulis file), input dan output terformat, alokasi memori, manipulasi string, dan sejenisnya. Sebuah koleksi header standar menyediakan akses seragam untuk deklarasi fungsi dalam tipe data. Program yang menggunakan library untuk berinteraksi dengan sistem host terjamin kompatibel. Sebagian besar library erat dimodelkan pada `` standard I / O library''dari sistem UNIX. Library ini telah dijelaskan dalam edisi pertama, dan telah banyak digunakan pada sistem lainnya juga.

Karena tipe data dan struktur kontrol yang disediakan oleh C didukung langsung oleh kebanyakan komputer, run-time library yang dibutuhkan kecil untuk proses program secara mandiri. Fungsi-fungsi library standar hanya dipanggil secara eksplisit, sehingga bisa saja diabaikan jika tidak diperlukan.