1. Sejarah versi Java

Sejarah Java bermula pada tahun 1991, apabila sekumpulan pengaturcara Sun memutuskan untuk mencipta bahasa untuk peranti kecil: alat kawalan jauh TV, pembancuh kopi, pembakar roti, kad bank dan sebagainya.

Pengeluar peranti ini menggunakan pemproses yang sangat berbeza untuk mengawal produk mereka, jadi menjadi sangat penting untuk terikat dengan seni bina pemproses atau OS tertentu.

Pencipta Java memutuskan untuk memecahkan masalah kepada dua bahagian: Program mereka akan disusun bukan ke dalam kod mesin untuk pemproses tertentu, tetapi ke dalam kod perantaraan khas. Sebaliknya, kod perantaraan itu akan dilaksanakan oleh program khas yang dipanggil mesin maya .

Kebanyakan pengaturcara merujuk kepada komputer sebagai mesin.

Menarik.

C++ telah diambil sebagai asas untuk bahasa Java dan sangat dipermudahkan dan diseragamkan. Jika C++ membenarkan anda melakukan sesuatu 10 cara, maka Java hanya mengekalkan satu daripadanya. Dalam beberapa cara ia seperti peralihan daripada hieroglif kepada abjad.

Versi pertama Java dikeluarkan pada tahun 1996. Sejak masa itu, Java memulakan perarakan kejayaannya di seluruh dunia, yang seterusnya, merangsang evolusi dan pertumbuhan bahasa itu sendiri. Hari ini, berjuta-juta perpustakaan dan berbilion baris kod ditulis dalam Java, dan versi baharu Java dikeluarkan setiap 6 bulan:

Nama tahun Bilangan kelas
JDK 1.0 1996 211
JDK 1.1 1997 477
J2SE 1.2 1998 1,524
J2SE 1.3 2000 1,840
J2SE 1.4 2002 2,723
J2SE 5.0 2004 3,279
Java SE 6 2006 3,793
Java SE 7 2011 4,024
Java SE 8 2014 4,240
Java SE 9 2017 6,005
Java SE 10 2018 6,002
Java SE 11 2018 4,411
Java SE 12 2019 4,433
Java SE 13 2019 4,515

Walaupun versi Java dikeluarkan secara berkala, ia tidak semuanya membawa kepentingan yang sama untuk pengaturcara: Java telah berkembang mengikut kesesuaian dan permulaan.


2. Jawa 2

Lonjakan besar pertama berlaku dengan keluaran JDK 1.2. Ia mempunyai begitu banyak inovasi di sana sehingga pencipta Java menamakannya Java 2 Platform Standard Edition atau singkatannya J2SE 1.2.

Inovasi utama adalah:

  • strictfpkata kunci
  • Pustaka Swing untuk bekerja dengan grafik
  • Pengkompil JIT, yang mempercepatkan pelaksanaan program Java
  • Satu set koleksi yang besar
  • Sokongan Unicode penuh: Jepun, Cina dan Korea.

Hari ini, inovasi ini tidak kelihatan begitu besar, tetapi setiap projek besar berkembang daripada projek kecil. Java tidak akan menjadi begitu popular hari ini jika sekumpulan kecil pengaturcara tidak terus meningkatkan bahasa 20 tahun lalu.


3. Jawa 5

JDK 1.5 telah dikeluarkan pada September 2004. Ia juga memperkenalkan banyak inovasi, jadi ia tidak dapat membantu tetapi layak mendapat nama baharu: bukannya versi 1.5, 1.6 dan 1.7, mereka memutuskan untuk menggunakan 5.0, 6.0 dan 7.0. Jadi, nama penuh JDK 1.5 ialah Java 2 Standard Edition 5.0

Kemas kini ini termasuk perkara-perkara yang tanpanya pembangunan lanjut bahasa tidak mungkin dapat dilakukan.

Anotasi . Separuh daripada rangka kerja moden utama dibina berdasarkan anotasi, daripada Spring dan Hibernate hingga JUnit.

Generik . Generik telah mengambil kuasa koleksi (dan banyak lagi) ke tahap baharu. Kod telah menjadi lebih ringkas, lebih padat dan lebih selamat.

Autoboxing/unboxing ialah penukaran automatik antara jenis primitif dan jenis pembalutnya. Ini menjadikannya lebih mudah untuk menulis dan membaca kod, dan menjadikan koleksi lebih popular.

Gelung kini menyumbang sekurang-kurangnya separuh daripada semua gelung yang ditulis oleh pengaturcara foreach. Dan, tentu saja, ia sangat diperlukan apabila bekerja dengan koleksi.

Enum adalah satu lagi ciri baharu yang bagus . Ia membolehkan banyak perkara dipermudahkan dengan indah.

Ini bukan semua inovasi: beratus-ratus kelas baharu telah ditambah. Perkara yang penting ialah mereka adalah inovasi yang betul, dan memberikan satu lagi rangsangan yang kuat kepada populariti Java.


4. Jawa 6

Java 6 diingati untuk sejumlah besar penambahbaikan kecil dan pengabaian nombor 2 dalam nama: ia bukan lagi "Java 2 Standard Edition 6.0", tetapi hanya "Java Standard Edition 6.0".

Berikut adalah beberapa inovasi yang menarik:

Java Compiler API memungkinkan untuk memanggil pengkompil Java terus dari kod. Ini bermakna program anda kini boleh menjana teks yang mewakili kod kelas, menyusunnya dengan memanggil kaedah Java Compiler API , dan kemudian mula memanggil kaedah kelas yang disusun. Terdapat keseluruhan bidang pembangunan di mana keupayaan ini sangat memudahkan kehidupan.

Ia menjadi mungkin untuk melaksanakan JavaScript secara langsung di dalam program Java. Ciri ini muncul kerana JavaSE 6 menyertakan enjin JavaScript Rhino.


5. Jawa 7

Java 7 dikeluarkan pada Julai 2011. Sepatutnya terdapat banyak penambahbaikan di dalamnya, tetapi pengaturcara hanya berjaya menambah sebahagian kecil daripada apa yang dirancang. Khususnya, mereka menambah perkara seperti:

Perpustakaan baharu untuk bekerja dengan input dan output data. Dikenali sebagai API Output Input Baharu , ia terletak dalam java.niopakej.

Inferens jenis automatik pengkompil Java pada masa penyusunan membolehkan pengaturcara menulis kurang kod. Pengkompil menjadi lebih bijak, dan itu hanya permulaan.

Pernyataan suis memperoleh keupayaan untuk menggunakan rentetan sebagai nilai kes.

Pengurusan sumber automatik juga bertambah baik dengan ketara: Dengan try-with-resourcesbinaan, program Java boleh menutup aliran data untuk anda apabila ia tidak diperlukan lagi.

Terdapat banyak perubahan lain, tetapi ia tidak begitu penting pada peringkat semasa kami mempelajari Java.


6. Jawa 8

Java 8 keluar pada Mac 2014 dan merupakan kemas kini terbaru Java yang paling kukuh.

Di atas semua itu, pengaturcara mengingatinya kerana penambahan ungkapan lambda dan antara muka berfungsi (anotasi @FunctionalInterface). Kami akan memeriksanya di Tahap 21. Kod anda tidak akan sama lagi.

Strim juga ditambahkan untuk koleksi, yang, digabungkan dengan ungkapan lambda, memungkinkan untuk menulis kod dengan lebih padat. Walaupun tidak selalu lebih mudah dibaca.

Menarik.

Dan perubahan besar ketiga ialah pengenalan API baharu Java 8 untuk bekerja dengan tarikh dan masa — API Masa Tarikh . Kami akan mengkajinya dalam masa terdekat.


7. Jawa 9

Java 9 telah dikeluarkan pada September 2017. Sejak itu, pencipta Java telah memutuskan untuk mengeluarkan versi baharu dengan lebih kerap — setiap enam bulan. Mereka mungkin kagum dengan pendekatan yang digunakan oleh pembangun penyemak imbas Google Chrome.

Keluaran Java 9 lebih memfokuskan pada dalaman mesin Java. Perkara paling penting yang dibawa kepada pengaturcara biasa ialah keupayaan untuk membahagikan program kepada modul. Ini sangat mudah apabila anda mempunyai puluhan ribu kelas atau apabila kod anda memunggah pemalam secara dinamik.

Tetapi ia mungkin tidak berguna kepada kita dalam masa terdekat.


8. Jawa 11

Enam bulan selepas keluaran Java 9, Java 10 keluar, dan enam bulan lagi, Java 11 keluar.

Banyak penambahbaikan kecil telah dibuat pada masa ini, tetapi anda berkemungkinan besar hanya ingat dua:

Ia menambah sokongan untuk Unicode 10. Kini anda boleh menggunakan emoji dalam program Java anda. Anda boleh bekerja dengan mereka dengan cara yang sama seperti anda bekerja dengan jenis boolean:

Inferens jenis telah dipertingkatkan dan varkata kunci , yang anda pasti suka, muncul.

Kini anda boleh menulis perkara berikut:

var str = "Hello";

Dan pengkompil menukar ini kepada:

String str = "Hello";

Tetapi terdapat juga beberapa kerugian. Pencipta Java menggugurkan perpustakaan seperti JavaFX, Java EE dan CORBA daripada JDK 11.


9. Kepentingan keserasian

Apabila versi baharu dikeluarkan, pengaturcara selalunya mahu bermula dari awal. Lagipun, siapa yang mahu membetulkan sekumpulan pepijat lama apabila mereka benar-benar positif bagaimana kod itu sepatutnya ditulis dari awal lagi?

Tetapi sejarah tidak menyokong pendekatan sedemikian. Setiap kali pengaturcara mengeluarkan versi baharu program, 90% penggunanya menggunakan versi lama. Mereka boleh menggunakan atau mengabaikan ciri baharu program, tetapi perkara yang dibenci pengguna ialah apabila sesuatu yang berfungsi dengan baik berhenti berfungsi.

Banyak produk hebat telah mati apabila pengaturcara mengeluarkan versi baharu yang tidak serasi. Atau hanya apabila mereka membuat perubahan besar. Sebagai contoh, idea untuk meninggalkan butang Mula dalam Windows 8 tidak menarik minat pengguna. Keluaran Windows 10 mengembalikan separuh daripada apa yang telah dialih keluar dalam Tetingkap 8.

Lebih-lebih lagi, Windows membolehkan anda menjalankan program yang ditulis 20 tahun lalu untuk Windows 95 atau bahkan ditulis 30 tahun lalu untuk MS DOS 3.0 — ia akan berfungsi. Ini adalah salah satu sebab mengapa Windows kekal popular.

Dan Java tidak akan sepopular jika pembangunnya tidak mengambil berat tentang keserasian. Pada bila-bila masa terdapat versi baharu mesin Java, versi baharu SDK, atau perubahan besar pada kelas, semua kod Java yang ditulis sejak Januari 1996 terus berfungsi.

Ini biasanya dicapai dengan hanya menambah kaedah, kelas dan pakej baharu, tanpa mengalih keluar apa-apa. Pendekatan ini ada kebaikan dan keburukannya.

Di satu pihak, Java menyeret sekumpulan bagasi dalam bentuk kod lama, suboptimum dan tidak perlu. Sebaliknya, projek anda yang ditulis dalam Java 11 sentiasa boleh menggunakan perpustakaan yang ditulis dalam Java 8 yang menggunakan perpustakaan yang ditulis dalam Java 5 dan Java 2. Kod hodgepodge ini akan berfungsi dengan baik.

Dengan bahasa C++, perpustakaan yang disusun untuk kedua-dua platform 32-bit dan 64-bit tidak boleh digunakan dalam projek yang sama. Dan anda akan mengalami sakit kepala yang teruk jika anda tiba-tiba mendapati bahawa charjenis yang digunakan dalam satu pustaka menggunakan satu bait, manakala yang lain menggunakan dua bait.


10. Tidak digunakan lagi

Jadi, pencipta Java memutuskan untuk tidak mengalih keluar apa-apa, tetapi hanya menambah kelas dan pakej baharu. Tetapi bagaimana mereka memberitahu pengaturcara bahawa terdapat alternatif baru yang layak untuk penyelesaian suboptimum sedia ada?

Untuk melakukan ini, mereka menghasilkan anotasi @Deprecated.

Jika sesetengah kaedah atau kelas ditamatkan, anotasi ini ditambah di sebelah pengisytiharannya. Ini bermakna pengaturcara tidak digalakkan menggunakan kod tersebut.

Anda masih boleh menggunakan kelas atau kaedah yang tidak digunakan, tetapi ia tidak disyorkan.

Dan berapa kerap orang melakukan perkara yang tidak disyorkan? Hampir selalu 🙂

Banyak kelas telah ditamatkan selama 20 tahun — mereka telah digunakan dan masih digunakan. Orang biasa dengan mereka atau mereka hanya mudah. Tetapi terdapat risiko bahawa mereka akan dikeluarkan pada satu ketika, jadi lebih baik tidak menggunakannya.

Semua IDE moden, termasuk IntelliJ IDEA, boleh mengendalikan @Deprecatedanotasi. Nama kelas dan kaedah yang ditamatkan dipaparkan menggunakan pemformatan coretan . Sesuatu seperti ini:

Date date = new Date();
int day = date.getDay();

Kelas yang ditamatkan adalah sangat popular dan sering dijumpai dalam kod, jadi kami akan melihat beberapa daripadanya tidak lama lagi.