Java vs. Google's Go: Pertempuran epik untuk bahagian pemikiran pemaju

Go vs Java bukan pertarungan yang sepadan antara sama. Salah satunya adalah kelas berat yang luar biasa yang telah menguasai industri selama bertahun-tahun. Yang lain adalah pendatang baru yang ringan dan ringan yang menunjukkan banyak masa muda dan janji tetapi hanya mempunyai beberapa pukulan.

Java dan Go juga mengatasi ceruk yang berbeza. Salah satunya ditujukan tepat pada aplikasi web sisi pelayan, kawasan di mana yang lain pernah menjadi pemain utama. Yang lain mempunyai kehidupan yang luar biasa di rak dan kini menjadi pilihan yang popular untuk peranti.

Tetapi tidak semua orang menjauh dari Java di sisi pelayan aplikasi web, wilayah Go menyerang, memakan di pangkalan Java. Dan pertukaran itu bukan lompatan yang sangat baik, kerana keduanya serupa dalam banyak aspek. Kedua-duanya adalah penghormatan kepada C, jika tidak di bawahnya, paling tidak di permukaan di mana banyak pemaju menghabiskan hidup mereka bergulat dengan sintaks. Mereka berdua mudah dan penting dengan persamaan struktur yang cukup sehingga tidak sukar untuk menukar kod antara keduanya. (Proyek TardisGo, misalnya, adalah salah satu alat yang akan mengubah Go menjadi Java, C #, atau JavaScript.)

Pertimbangkan ini sebagai pertandingan kandang yang menempatkan dua sepupu dari pelbagai sisi trek pengaturcaraan yang bersaing untuk timbunan aplikasi anda yang seterusnya.

Sejarah panjang Java membawa kesan rangkaian yang membantu semua orang

Java telah wujud sejak tahun 1995, menarik lebih banyak bahagian minda setiap tahun. Segala-galanya dari pemproses tertanam kecil hingga cip pelayan besar menjalankan Java dengan cepat dan cekap berkat mesin maya tepat waktu yang lincah. Android telah menjadi kelebihan untuk Java, sejauh ini sebagai platform paling popular di dunia mudah alih. Itulah sebabnya Java kekal sebagai anjing teratas dalam kedudukan seperti indeks Tiobe dan PyPL. Penerapan yang luas ini bermaksud terdapat banyak kod untuk digunakan semula, dan kebanyakannya adalah sumber terbuka untuk mempermudah hidup anda. Anda akan berdiri di atas bahu raksasa apabila anda mula menjalin garis-garis bazillion kod Java yang tersedia secara bebas.

Sejarah ringkas Go menjadikannya relevan serta-merta

Sudah tentu, sangat menyenangkan untuk mendapatkan kod Java bebas dari web. Tetapi tunggu, ini ditulis untuk Java 1.3, dan atasan anda ingin anda menggunakan Java 1.8. Jangan risau, anda mungkin dapat membuatnya berfungsi semula dengan sedikit penulisan semula. Mari kita ubah tarikh akhir itu lagi ... dan lagi. Kod lama mungkin kelihatan seperti hadiah, tetapi tidak selalu menjadi slam dunk, dan kadang-kadang lebih menyusahkan daripada yang berharga.

Sejarah ringkas Go, sebaliknya, bermaksud ia ditulis untuk standard web masa kini. Tidak ada kerajinan yang tersisa dari zaman ketika applet akan menguasai dunia. Tidak ada idea yang lama dilupakan seperti Java Beans atau J2EE yang terganggu sebagai gangguan menggoda. Ini baru dan direkayasa untuk bagaimana orang membina web hari ini.

Java membolehkan anda mengetuk bahasa lain

JVM adalah asas untuk puluhan bahasa menarik yang bergantung pada Java pada waktu runtime. Masing-masing dapat dihubungkan dengan mudah ke kod anda, membiarkan anda menulis satu bahagian di Kotlin, yang lain di Scala, dan mungkin merekatkannya bersama-sama dengan Clojure. Sekiranya anda ingin menggunakan bahasa seperti Python, JavaScript, atau Ruby, ketiga-tiganya dapat berjalan langsung di tanah Jawa menggunakan emulator yang sering menjadi pilihan pertama. Java memberi anda kebebasan untuk membiarkan setiap subtugas dan subproyek memilih bahasa yang tepat untuk pekerjaan itu ketika masih berjalan di JVM yang sama. Anda tidak perlu menggunakannya, tetapi peluangnya selalu ada.

Go mempromosikan keharmonian

Ya, anda boleh menyatukan aplikasi superclever yang menggabungkan yang terbaik dari yang baru dan yang bergaya, memilih bahasa yang terbaik untuk setiap bahagian dari karya hebat anda di JVM. Anda bahkan boleh bergaul lama seperti Rexx dan Common Lisp untuk menghormati tempat mereka dalam sejarah pengkomputeran era 70-an. Semoga berjaya mencari seseorang dengan cita rasa dan bakat yang sama yang akan mengekalkan Menara Babel ini. Selain mencampurkan beberapa perpustakaan yang dibuat dengan baik, tidak selalu merupakan rancangan yang baik untuk meniru Rube Goldberg ketika merancang kod yang baik. Kadang-kadang ia berguna dan perlu, tetapi itu tidak bermaksud ia adalah rancangan yang baik. Keharmonian dan ketekalan menjadikan hidup lebih mudah untuk semua. Dunia Go memberikannya.

JVM Java ramping dan kuat

Fail kelas Java sering diukur dalam ratusan bait. Fail JAR yang menghubungkannya biasanya hanya beberapa megabait. Kod Java sendiri kecil kerana mesin maya memegang begitu banyak kuasa untuk pengurusan dan keselamatan memori. Sekiranya anda merancang untuk memindahkan banyak kod, masuk akal untuk meninggalkan fungsi dalam alat runtime yang biasa. Terdapat kelebihan lain untuk pemusatan. Sekiranya masalah keselamatan muncul di tingkat Java yang paling rendah, tidak perlu menyusun semula dan menghubungkan semula semua kod anda. Banyak masalah diselesaikan dengan menaik taraf JVM sahaja.

Go membuat pakej lengkap

JVM sangat bagus sehingga anda mendapati versi yang salah dipasang. Sekiranya anda ingin menjalankan JAR yang dikemas dengan Java 1.8, tetapi hanya mempunyai versi 1.6 dari JVM, anda tidak akan sampai ke mana-mana sehingga anda menemuinya. Penyusun Go menghasilkan binari yang siap dijalankan. Ya, mereka agak besar, tetapi itu kerana Go menambahkan semua kod tambahan ke dalam perduaan untuk anda. Semuanya ada dalam satu pakej mudah.

Java menjadikan benang mati menjadi sederhana

Mendapatkan pelbagai bahagian program untuk dijalankan secara bebas bukanlah sesuatu yang mudah. Java memenangi peminat awal kerana model utamanya cukup mudah difahami sementara cukup kuat untuk berguna. JVM melakukan kerja pemetaan benang dengan teras yang berbeza pada mesin. Ia tidak mudah dilakukan, tetapi itu kerana kerumitan masalah, bukan masalah Java. Pengguna Go mungkin menyukai goroutine dan saluran mereka, tetapi mereka menambahkan satu lagi kerumitan yang rumit ke dalam kekacauan yang sudah pasti. Anda akan mendapati diri anda bertanya sama ada benang hijau atau utas OS. Maka anda akan tertanya-tanya tentang kerumitan saluran penyegerakan. Java lebih berterus terang.

Go meringankan beban benang, dengan bijak

Benang Java dan primitif penyegerakan mungkin menjalankan tugas, tetapi dengan kos yang tinggi. Membuat dan menghancurkan benang sangat sukar dan memerlukan memori sehingga programmer Java selalu mengitar semula mereka dengan kumpulan utas. Java telah kehilangan daya tarikan pada pelayan kerana setiap klik di laman web memerlukan utasnya sendiri. Go mempunyai berat yang lebih ringan dan objek yang lebih fleksibel yang disebut goroutine yang dihubungkan dengan barisan penyegerakan pintar yang disebut saluran. Walaupun kebanyakan pelayan nampaknya unggul pada 1.000 atau mungkin 10.000 utas Java, orang kerap melaporkan menjalankan ratusan ribu goroutin pada perkakasan yang sama.

Model Go lebih canggih dan moden kerana lebih muda. Bidang ini telah belajar banyak mengenai penyampaian algoritma multiprosesor yang canggih, dan anda juga boleh memanfaatkannya.

Alat Java dicuba dan benar

Kematangan Java bermaksud anda mempunyai banyak pilihan hebat untuk alat: Eclipse, IntelliJ, dan banyak lagi. Terdapat alat binaan yang canggih seperti Ant dan Maven, dan repositori utama dioptimumkan untuk mengendalikan kod Java. Terdapat juga analisis kod meta untuk segalanya, mulai dari menguatkuasakan peraturan kod hingga mencari keadaan perlumbaan. Mereka mungkin tidak berfungsi dengan versi kod anda, tetapi mereka sering melakukannya. Inilah sebabnya mengapa Java adalah juggernaut.

Alat Go moden dan baru

Go dibina untuk dunia multithreaded moden, dan alat kod dioptimumkan untuk cabaran masa kini. Terdapat alat pengesan keadaan perlumbaan yang dibina di dalam debugger dan waktu proses, jadi lebih mudah untuk menangani masalah yang tidak menyenangkan. Kod sumber dapat diaudit oleh golint dan penganalisis statik yang disebut "go vet" yang memiliki sejumlah heuristik untuk menangkap kod Go yang buruk atau bahkan ditulis dengan buruk. Semua ini dan banyak lagi dioptimumkan untuk memastikan kod anda berjalan dengan cepat di mesin multicore.

Java mempunyai konstruk yang anda mahukan

Selama bertahun-tahun, masyarakat Jawa menginginkan banyak ciri; beberapa waktu, mereka telah diberikan. Penutupan, generik, lambdas, dan banyak lagi telah ditambahkan. Sekiranya terdapat idea baru dalam bahasa pengaturcaraan, ada kemungkinan besar seseorang telah menerimanya ke dunia Java. Mungkin tidak sesuai, tetapi pilihannya ada. Anda boleh menulis kod cemerlang yang dibayangkan otak anda berkat evolusi Java yang berterusan.

Pergi mengelakkan kekeliruan membina

Kebebasan untuk menggunakan berpuluh-puluh struktur pengkodan pintar kelihatan hebat sehingga semua orang dalam pasukan mula melakukannya. Kemudian membaca kod orang lain menjadi lebih sukar kerana mereka menggunakan ciri pintar A sementara otak anda terbiasa dengan ciri pintar B. Kekeliruan gabungan dengan setiap pembangun yang memasukkan konstruk kegemarannya ke dalam campuran.

Go, sebaliknya, dirancang untuk menjadi sederhana. Ia dibuat secara eksplisit sehingga pengaturcara yang baik dapat belajar Go dalam beberapa jam. Tidak ada puluhan idea pintar yang memenuhi ratusan halaman dokumentasi. Itu mungkin mengehadkan semasa menulis kod, tetapi santai apabila membaca kod dari orang lain dalam pasukan. Setiap orang menggunakan simpulan bahasa yang sama kerana setiap orang menggunakan ciri inti yang sama. Ia bukan sekadar pengalaman membina pasukan, seperti Outward Bound. Ini mengenai kecekapan.

Jawa sudah matang

Zaman membawa kebijaksanaan, kematangan, dan kestabilan — semua alasan untuk memilih pangkalan data yang luas dan direkayasa dengan baik yang lebih dari dua dekad. Anak-anak hari ini terus belajar Java pada awal perjalanan mereka dengan sains komputer, dan platform yang paling dominan, Android, dibangun di atasnya. Kecuali ada alasan yang baik untuk berubah, anda harus berpegang pada yang terbaik.

Go adalah batu tulis yang bersih

Kadang-kadang lebih baik untuk meninggalkan masa lalu. Bagaimanapun, kemajuan sering kali bermaksud bermula dari awal. Go menawarkan anda peluang untuk bekerja dengan alat yang bersih, segar dan moden yang dioptimumkan untuk apa yang kita lakukan hari ini. Ia membolehkan anda menikmati kesederhanaan dan kebebasan untuk meninggalkan masa lalu.

Dan hanya kerana Google memulakan Go untuk memberikan beberapa kesederhanaan dalam pengekodan untuk ladang pelayan mereka yang tidak berkesudahan, itu tidak bermaksud ia tidak dapat melampauinya. Ada yang menggunakannya untuk menjalankan drone, robot, dan peranti lain. Bolehkah telefon pintar jauh ketinggalan?

Artikel berkaitan

  • Ketik kehebatan bahasa Go Google
  • IDE dan editor bahasa Go terbaik
  • Ulasan: Empat IDE Java yang besar dibandingkan
  • Angular vs. React: Pertempuran epik untuk bahagian pemikiran pemaju
  • Java vs. Node.js: Pertempuran epik untuk bahagian pemikiran pemaju
  • PHP vs Node.js: Pertempuran epik untuk bahagian pemikiran pemaju
  • Python vs R: Pertempuran untuk berkongsi minda saintis data
  • 21 trend pengaturcaraan yang panas - dan 21 akan menjadi sejuk
  • 9 pengaturcara pembohongan memberitahu diri mereka sendiri
  • Peretasan kerjaya: Perkara profesional dan tidak boleh dilakukan untuk pemaju