Perbandingan persekitaran pembangunan. Editor atau IDE? Satu lagi percubaan analisis. Membina, Menyahpepijat dan Pemprofilan

Menulis dalam Python menggunakan IDLE atau Python Shell agak mudah apabila melibatkan perkara mudah, tetapi apabila projek berkembang dalam saiz, pengaturcaraan menjadi sakit. Menggunakan IDE atau editor kod yang baik boleh menjadikan hidup anda lebih mudah. Tetapi persoalannya ialah - apa yang harus dipilih?

Dalam artikel ini, kami akan meneliti alatan asas yang membolehkan anda menulis dalam Python. Kami tidak akan memilih untuk anda pilihan terbaik, tetapi kami akan melihat kebaikan dan keburukan setiap satu dan membantu anda membuat keputusan termaklum.

Apakah itu IDE dan editor kod?

IDE (atau persekitaran pembangunan bersepadu) ialah program yang direka untuk pembangunan perisian. Seperti namanya, IDE menghimpunkan beberapa alat yang direka khusus untuk pembangunan. Alat ini biasanya termasuk editor yang direka untuk berfungsi dengan kod (seperti penyerlahan sintaks dan autolengkap); bina, masa jalan dan alat penyahpepijatan; dan beberapa bentuk sistem kawalan versi.

Kebanyakan IDE menyokong berbilang bahasa pengaturcaraan dan mempunyai banyak ciri, yang bermaksud ia boleh menjadi besar, mengambil masa yang lama untuk memuat turun dan memasang, dan memerlukan pengetahuan yang luas untuk digunakan dengan betul.

Sebaliknya, terdapat penyunting kod, iaitu penyunting teks dengan penonjolan sintaks dan keupayaan pemformatan kod. Kebanyakan editor kod yang baik boleh menjalankan kod dan menggunakan penyahpepijat, dan yang terbaik juga boleh berinteraksi dengan sistem kawalan versi. Berbanding dengan IDE, editor kod yang baik biasanya lebih ringan dan lebih pantas, tetapi selalunya pada kos fungsi yang kurang.

Keperluan untuk persekitaran pembangunan yang baik

Jadi apa yang kita perlukan dari persekitaran pembangunan? Set fungsi persekitaran yang berbeza mungkin berbeza, tetapi terdapat satu set perkara asas yang memudahkan pengaturcaraan:

  • Menyimpan fail. Jika IDE atau editor tidak memberi anda keupayaan untuk menyimpan kerja anda dan kemudian membuka segala-galanya dalam keadaan yang sama semasa anda menutupnya, maka ia bukanlah IDE yang banyak;
  • Menjalankan kod dari persekitaran. Perkara yang sama, jika anda perlu keluar dari persekitaran untuk menjalankan kod, maka ia tidak lebih daripada editor teks mudah;
  • Menyahpepijat sokongan. Keupayaan untuk melangkah melalui kod adalah fungsi asas semua IDE dan kebanyakan editor kod yang baik;
  • Penonjolan sintaks. Keupayaan untuk mencari dengan cepat kata kunci, pembolehubah, dsb. menjadikan membaca dan memahami kod lebih mudah;
  • Pemformatan kod automatik. Mana-mana editor atau IDE yang sebenarnya adalah satu akan mengenali titik bertindih selepas beberapa ketika atau untuk ekspresi dan secara automatik akan mengensot baris seterusnya.

Sudah tentu, terdapat banyak ciri lain yang anda tidak mahu ketinggalan, tetapi perkara di atas adalah ciri asas yang perlu ada pada persekitaran pembangunan yang baik.

Sekarang mari kita lihat beberapa alat tujuan am, yang boleh digunakan untuk pembangunan Python.

Editor dan IDE dengan sokongan Python

Eclipse + PyDev

Jika anda rapat dengan komuniti sumber terbuka, maka anda mungkin pernah mendengar tentang Eclipse. Tersedia untuk Linux, Windows dan OS X, Eclipse ialah IDE sumber terbuka de facto untuk pembangunan Java. Terdapat banyak sambungan dan tambahan yang menjadikan Eclipse berguna untuk pelbagai tugas.

Satu sambungan sedemikian ialah PyDev, yang menyediakan konsol Python interaktif dan keupayaan penyahpepijatan dan penyiapan kod. Memasangnya adalah mudah: lancarkan Eclipse, pilih Bantuan → Eclipse Marketplace, kemudian cari PyDev. Klik Pasang dan mulakan semula Eclipse jika perlu.

Kelebihan: Jika anda sudah memasang Eclipse, maka pemasangan PyDev akan menjadi cepat dan lancar. U pengguna berpengalaman Eclipse tidak akan menghadapi masalah mempelajari sambungan ini.

Kecacatan: Jika anda baru mula belajar Python atau pembangunan secara umum, Eclipse boleh menjadi beban yang amat berat. Ingat kami berkata bahawa IDE adalah besar dan memerlukan lebih banyak pengalaman kegunaan penuh? Semua ini boleh dikatakan tentang Eclipse.

Teks Sublime

Jenis: penyunting kod
laman web: http://www.sublimetext.com

Ditulis oleh jurutera Google dengan impian untuk mendapatkan editor teks yang lebih baik, Sublime Text ialah editor kod yang sangat popular. Tersedia pada semua platform, Sublime Text mempunyai sokongan terbina dalam untuk mengedit kod Python, serta set sambungan yang kaya yang dipanggil pakej yang memanjangkan keupayaan sintaks dan penyuntingan.

Memasang pakej Python tambahan boleh menjadi rumit - semua pakej Teks Sublime ditulis dalam Python, jadi memasang pakej komuniti selalunya memerlukan menjalankan skrip Python secara langsung dalam editor.

Kelebihan:y Teks Sublime sejumlah besar peminat. Sebagai editor kod, Teks Sublime adalah pantas, ringan dan disokong dengan baik.

Kecacatan: Teks Sublime tidak percuma, walaupun anda boleh menggunakan tempoh percubaan selagi anda suka. Memasang sambungan boleh bertukar menjadi pencarian lain. Selain itu, editor tidak menyokong penyahpepijatan atau kod berjalan.

Atom

Jenis: penyunting kod
laman web: https://atom.io/

Tersedia pada semua platform, Atom telah dipanggil "editor teks yang boleh digodam abad ke-21." Atom ditulis menggunakan Electron - rangka kerja untuk mencipta aplikasi desktop merentas platform menggunakan JavaScript, HTML dan CSS - dan mempunyai banyak sambungan. Sokongan Python juga boleh didayakan menggunakan sambungan yang boleh dipasang terus ke dalam Atom.

Kelebihan: Disokong pada semua platform terima kasih kepada Electron. Atom ringan dan pantas untuk dimuat turun dan dimuatkan.

Kecacatan: Sokongan untuk membina dan menyahpepijat tidak terbina dalam, tetapi ditambah melalui sambungan. Kerana Atom ditulis menggunakan Elektron, ia sentiasa berjalan sebagai proses JavaScript, bukan sebagai a apl asli.

GNU Emacs

Jenis: penyunting kod
Tapak web: https://www.gnu.org/software/emacs/

Jauh sebelum perang iPhone-Android, sebelum perang Linux-Windows, bahkan sebelum perang PC-Mac, terdapat perang editor dengan GNU Emacs sebagai salah satu pejuang. Digambarkan sebagai "editor teks yang boleh diperluas, boleh disesuaikan, pendokumentasian sendiri", GNU Emacs telah wujud hampir selagi UNIX dan telah memperoleh ramai pengikut.

Tersedia secara percuma pada setiap platform (dalam satu bentuk atau yang lain), GNU Emacs menggunakan bahasa Lisp untuk penyesuaian. Sudah tentu, terdapat juga skrip penyesuaian untuk Python.

Kelebihan: Anda biasa dengan Emacs, anda menggunakan Emacs, anda suka Emacs. Lisp ialah bahasa kedua anda dan anda tahu anda boleh melakukan apa sahaja dengannya.

Kecacatan: penyesuaian melibatkan penulisan (atau salin-tampal) kod Lisp masuk pelbagai skrip. Jika tidak ada, anda mungkin perlu belajar Lisp untuk memikirkannya.

Vi/Vim

Jenis: penyunting kod
laman web: https://www.vim.org/

Di sisi lain perang editor ialah VI/VIM. Tersedia secara lalai pada hampir setiap sistem UNIX dan Mac OS X, VI telah memenangi sama banyak peminat. VI dan VIM ialah editor modal yang memisahkan paparan fail daripada mengeditnya. VIM merangkumi semua yang VI ada, ditambah dengan beberapa penambahbaikan seperti ketersediaan sambungan. Untuk pelbagai jenis tugas Python, anda boleh menggunakan VIMScripts.

Kelebihan: Anda biasa dengan VI, anda menggunakan VI, anda suka VI. VIMScripts tidak menakutkan anda, dan anda tahu cara membengkokkannya mengikut kehendak anda.

Kecacatan: Seperti Emacs, anda tidak begitu selesa mencari atau menulis skrip untuk menambah keupayaan pembangunan Python, dan anda tidak tahu bagaimana editor modal sepatutnya berfungsi sama sekali.

Studio Visual

Kelebihan: Seperti Eclipse, jika anda sudah memasang Visual Studio untuk tujuan lain, pemasangan PTVS tidak akan menjadi masalah.

Kecacatan: Seperti Eclipse, Visual Studio akan menjadi lebih banyak jika anda hanya memerlukan Python. Di samping itu, jika anda menggunakan Linux, maka anda menghadapi masalah - tiada Visual Studio untuk platform ini.

Kod Studio Visual

Jenis: penyunting kod
laman web: https://code.visualstudio.com/
Alat Python: https://marketplace.visualstudio.com/items?itemName=ms-python.python

Kod Visual Studio (jangan dikelirukan dengan Visual Studio) ialah editor kod berciri penuh yang tersedia pada Windows, Linux dan Mac OS X. Kod VS ialah editor sumber terbuka yang boleh diperluaskan yang boleh disesuaikan untuk sebarang tugas. Seperti Atom, Kod VS dibina di atas Elektron, jadi ia mempunyai kelebihan dan kekurangan yang sama.

Menambah sokongan Python pada Kod VS tidak boleh menjadi lebih mudah—cari "Python" di Marketplace, klik "Pasang," dan mulakan semula editor jika perlu. Kod VS secara automatik akan mengesan penterjemah Python anda dan pustaka yang dipasang.

Kelebihan: Terima kasih kepada Electron, VS Code tersedia pada semua platform dengan fungsi yang menakjubkan. Di samping itu, kod sumber boleh didapati dalam domain awam.

Kecacatan: Memandangkan Electron terlibat, ini bermakna Kod VS bukan aplikasi asli. Selain itu, sesetengah agama menghalang mereka daripada menggunakan produk Microsoft.

Editor dan IDE yang direka untuk Python

PyCharm

Salah satu IDE berciri lengkap terbaik yang direka khusus untuk Python ialah PyCharm. Terdapat kedua-dua pilihan IDE sumber terbuka (Komuniti) dan berbayar (Profesional) percuma. PyCharm tersedia pada Windows, Mac OS X dan Linux.

PyCharm menyokong pembangunan Python di luar kotak - buka fail baharu dan mula menulis kod. Anda boleh menjalankan dan menyahpepijat kod terus daripada PyCharm. Di samping itu, IDE mempunyai sokongan untuk projek dan kawalan versi.

Kelebihan: Ini ialah persekitaran pembangunan Python dengan sokongan untuk segala-galanya dan komuniti yang baik. Di dalamnya, di luar kotak, anda boleh mengedit, menjalankan dan menyahpepijat kod Python.

Kecacatan: PyCharm mungkin lambat dimuatkan dan tetapan lalai mungkin perlu dilaraskan untuk projek sedia ada.

Spyder

Spyder ialah IDE sumber terbuka untuk Python, dioptimumkan untuk saintis data. Spyder disertakan dengan pengurus pakej Anaconda, jadi mungkin anda sudah memasangnya.

Apa yang menarik tentang Spyder ialah ia penonton sasaran adalah saintis data menggunakan Python. Sebagai contoh, Spyder berfungsi dengan baik dengan perpustakaan sains data seperti SciPy, NumPy dan Matplotlib.

Spyder mempunyai fungsi yang anda harapkan daripada IDE standard, seperti editor kod dengan penyerlahan sintaks, pelengkapan kod dan juga penyemak imbas dokumentasi terbina dalam.

Ciri tersendiri Spyder ialah kehadiran penjelajah berubah-ubah. Ia membolehkan anda melihat nilai pembolehubah dalam bentuk jadual betul-betul di dalam IDE. Integrasi dengan IPython/Jupyter juga berfungsi dengan baik.

Kita boleh katakan tentang Spyder bahawa ia lebih "turun ke bumi" daripada IDE lain. Ia boleh dilihat sebagai alat untuk tujuan tertentu dan bukannya sebagai persekitaran pembangunan utama. Apa yang menarik tentangnya ialah ia percuma, sumber terbuka dan tersedia pada Windows, macOS dan Linux.

Kelebihan: Anda seorang saintis data yang menggunakan Anaconda.

Kecacatan: Pembangun Python yang lebih berpengalaman mungkin mendapati Spyder tidak cukup kaya ciri untuk kerja seharian dan akan memilih IDE atau editor yang lebih kaya ciri.

Thonny

Thonny dipanggil IDE untuk pemula. Ditulis dan diselenggara oleh Institut Informatik di Universiti Tartu di Estonia, Thonny tersedia di semua platform utama.

Secara lalai, Tonny memasang dengan versi Python yang disertakan, jadi anda tidak perlu memasang apa-apa lagi. Pengguna lanjutan mungkin perlu menukar tetapan ini agar IDE mencari dan menggunakan perpustakaan yang telah dipasang.

Kelebihan: Anda seorang pengaturcara Python pemula dan anda memerlukan IDE yang anda boleh melompat terus ke dalam tindakan dengannya.

Kecacatan: Pengguna lanjutan tidak akan mempunyai kefungsian yang mencukupi dan akan menggantikan penterjemah terbina dalam. Di samping itu, memandangkan kebaruan IDE, masalah mungkin timbul yang tidak dapat diselesaikan. masa ini Tidak.

Jadi yang mana satu patut anda pilih?

  • Pemula Python harus memilih sesuatu dengan jumlah pilihan penyesuaian yang paling sedikit. Lebih sedikit halangan lebih baik;
  • Jika anda sudah menggunakan beberapa editor untuk tugasan lain, kemudian lihat ke arah editor kod;
  • Nah, jika anda sudah mempunyai IDE untuk bahasa lain, cuba tambahkan sokongan Python padanya.

Adakah anda juga berminat dengan web? Kemudian lihat yang serupa kami untuk pembangunan web.

"Saya terus tertanya-tanya bila masanya akan tiba apabila saya perlu berkata dalam gaya "Ya, saya sebaya dengan awak!.. dll." Dan sekarang... Saat ini, kemungkinan besar, telah tiba. Kepada awak - bagaimana Seperti yang dapat dilihat daripada catatan anda baru-baru ini, anda berumur 16 tahun dan anda meletakkan diri anda sebagai orang muda yang berminat dalam pengaturcaraan. Sama ada anda akan menggunakan Go untuk projek web berskala besar, atau anda tidak dapat mencari skema warna untuk editor Sublime Text 3 memulakan pengaturcaraan, dengan satu topik untuk kerja siang dan satu lagi untuk kerja malam. Dan semua ini supaya, seperti yang anda letakkan dalam jawatan yang sama, dalam masa terdekat sekali lagi - mula menulis dalam bahasa golang. Sekarang IDE itu sendiri dipersoalkan.

Pada usia anda, atau lebih tepat, dari umur 12 hingga kira-kira 16, saya duduk di rumah di komputer ES-1840 yang bersenandung dilengkapi dengan monitor "Elektronik" hitam-putih. Di sana, percayalah, tidak ada tema - malam mahupun siang. Belum lagi fakta bahawa konsep "grafik" telah dikurangkan kepada algoritma untuk memaparkan bentuk geometri yang mudah, secara praktikal, boleh dikatakan, "setiap piksel". Tiada IDE yang mewah, dan Norton dianggap sebagai puncak ergonomik UI Komander Volkov. Windows dan GUI? Tidak, kami tidak pernah mendengar... Terdapat MS-DOS dalam semua kegemilangannya.

Tetapi, kawan muda saya, terdapat Borland TurboPascal, Borland C++, Microsoft GW-BASIC dan lain-lain - yang paling mudah dalam erti kata cangkerang grafik(jika konsep sedemikian boleh didapati di sana), tetapi persekitaran pembangunan yang diperlukan untuk MS-DOS, yang mana ramai yang menjadi profesional tanpa sebarang tema malam. Oh ya, saya terlupa untuk menyebut: tidak ada Internet ketika itu dan jawapan kepada soalan seperti "Bagaimana saya boleh melakukannya supaya..." tidak dapat ditemui menggunakan Google. Dan tidak ada buku. Kecuali buku V. E. Figurnov "IBM PC for the User" adalah hampir satu-satunya bible generasi kami dan imbasan yang sedikit daripada dokumentasi yang disertakan dengan versi rasmi program yang disebutkan di atas dan dianggap lebih berharga daripada emas.

Seperti yang saya telah menulis kepada anda, saya mengenali orang (dan ramai orang) yang telah merancang untuk mempelajari Java selama bertahun-tahun, tetapi tidak dapat memutuskan mana yang lebih baik - Eclipse atau NetBeans. Akibatnya, mereka kekal di tempat mereka berada, tanpa belajar apa-apa. Dan semuanya kerana mereka mendekati proses dari sisi yang salah, dengan jelas mempercayai bahawa punca salah faham mereka tentang asas pengaturcaraan dikaitkan dengan penggunaan IDE yang menyusahkan.

Saya berharap anda maju, dan oleh itu saya bertanya: jangan ulangi pengalaman orang yang kalah dan jangan pijak orang lain yang usang ini. Belajar dan mulakan pengaturcaraan, dan tinggalkan topik untuk kemudian.

Saya ingin sekali lagi membangkitkan topik yang agak kontroversi ini.

Sejak saya memulakan pengaturcaraan, soalan ini telah menghantui saya, dan banyak topik di forum dan hab tidak membawa sebarang kejelasan. Tambahan pula, saya nampaknya beberapa hujah untuk kedua-dua pihak tidak diberikan. Dan mereka yang diberi mempunyai keutamaan mereka ditetapkan dengan tidak betul dan konteksnya hilang.

Dalam artikel ini saya akan cuba membetulkan peninggalan ini dan tandakan "e" sedikit lagi.

Saya menjemput semua orang untuk mengambil bahagian dalam mencari instrumen yang ideal.

Mengenai pengalaman saya

Saya memulakan pengaturcaraan dalam DOS. pada Turbo Pascal. Selain itu, atas sebab tertentu, kami kemudian menggunakan IDE hanya untuk penyahpepijatan, dan kemudian agak jarang. Untuk menulis kod, mereka lebih suka menggunakan beberapa edit.exe tanpa nama tanpa sebarang penyerlahan sintaks bersama dengan Volkov Commander. Dan itu sudah cukup. Saya kemudian belajar assembler dan, sebahagiannya, C++ menggunakan kaedah yang sama.

Meneruskan mempelajari C++, saya beralih kepada Windows dan, oleh itu, Visual Studio - di manakah saya tanpanya? Saya jumpa versi kalau tak silap dari 5 hingga 7. Selepas editor yang mudah ia adalah sesuatu yang menggembirakan - penjanaan kod dan pelengkapan automatik. Benar, hampir mustahil untuk memahami semua kebaikan yang dihasilkan ini, tetapi ini nampaknya tidak penting.

Selepas beberapa lama, saya beralih ke Linux dan memulakan pembangunan web dalam PHP. Di sini saya belajar vim pada masa yang sama dan menggunakan ZendStudio untuk pembangunan. Pada satu ketika saya mula menggunakan Vim sahaja untuk segala-galanya - saya mengubahnya, mengikut banyak tutorial, menjadi idea kecil. Di sinilah saya menulis CMS berbasikal pertama saya dalam PHP.

Saya perhatikan sebelum ini pengaturcaraan bukanlah aktiviti utama saya. Ya, saya menulis pelbagai utiliti kecil untuk bekerja, membuat tema untuk WordPress, tetapi aktiviti utama saya ialah pentadbiran.

Sebaik sahaja saya mula membangun secara profesional, keupayaan vim tidak lagi mencukupi untuk saya. Mula-mula ada gerhana, kemudian netbeans, sekarang - phpstorm.

Selama setengah tahun yang lalu saya telah mencuba dengan berani untuk menguasai emac, termasuk. sebagai persekitaran kerja utama.

Jadi saya mempunyai sesuatu untuk dibandingkan dan, saya harap, pendapat saya akan cukup berasas dan munasabah.

IDE? IDE...

Saya berfikir untuk masa yang lama dalam bentuk apa untuk mengemukakan perbandingan kelebihan dan kekurangan pihak. Senarai ini tidak begitu sesuai untuk ini, kerana... penyenaraian ringkas tidak mencerminkan sepenuhnya intipati isu tersebut. Editor dan IDE bukanlah bertentangan, sebaliknya alat yang aplikasinya bertindih di sesetengah kawasan. Kelebihan editor tidak selalunya kelemahan persekitaran dan begitu juga sebaliknya. Atas sebab ini, lebih atau kurang perbincangan berstruktur mengenai topik berikut.

Saya akan mulakan, mungkin, dengan salah satu kelebihan editor yang tidak dapat dipertikaikan - keupayaannya yang kaya untuk bekerja dengan teks dan keupayaan untuk melakukan segala-galanya tanpa melepaskan tangan anda dari papan kekunci. Kebanyakan persekitaran tidak boleh melakukan ini. Tetapi adakah ciri sedemikian diperlukan semasa menulis kod? Semasa menulis artikel atau surat, saya fikir adalah mudah untuk menukar 2 perkataan atau mengalihkan perenggan ke bahagian atas halaman dengan satu ketukan kekunci. Tetapi dalam teks program ini, dalam kebanyakan kes, tidak bermakna dan memerlukan pemfaktoran semula. Dan anda perlu membayar untuk ini sama ada dengan pintasan papan kekunci emacs yang membunuh jari, atau dengan tidak kurang perintah memecahkan otak dalam vim. Tetapi semua ini perlu diingat! Apa yang hanya boleh diselesaikan dengan satu pergerakan tetikus, seperti mengalihkan tetingkap atau menukar saiznya, bertukar menjadi pencarian keseluruhan. Ya, lebih mudah untuk memilih teks menggunakan tetikus - lebih tepat, lebih pantas, dan anda tidak perlu mengira bilangan perkataan yang terdapat pada tempat yang dikehendaki dalam teks. Tidak, pengaturcara juga boleh Fungsi-fungsi ini mungkin berguna, tetapi hakikatnya ialah masa yang diluangkan untuk menyunting kod itu boleh diabaikan, jadi boleh dikatakan tidak akan ada faedah dalam masa. Tetapi komplikasi ketara instrumen itu jelas.

Seorang pengaturcara menghabiskan 80% masanya memahami kod bertulis dan bergerak melaluinya. Lebih-lebih lagi, bergerak dengan tepat mengikut kod, dan bukan dengan teks! Dan di sini editor tidak boleh berbuat apa-apa untuk membantunya. Senarai parameter kaedah tidak akan ditunjukkan dalam petua alat, ia tidak akan membenarkan anda pergi ke definisi kaedah, dan sintaks tidak akan disemak. Dan IDE, walaupun yang paling mudah, mengendalikan ini dengan mudah dan elegan. Saya baru-baru ini menghabiskan kira-kira 10 minit mencari definisi kaedah dalam projek menggunakan silversearcher emacs. Ternyata kelas itu ditakrifkan dalam modul lain, dsb. 10 minit, bukannya satu klik tetikus! Saya, sudah tentu, tidak cukup berpengalaman dalam emacs, jadi biarkan ia 5 minit, walaupun seminit. Tetapi nisbahnya masih mengagumkan.

Dan di sini IDE menunjukkan kelebihannya, mungkin, sahaja, tetapi sangat berani - kehadiran penghurai bahasa pengaturcaraan. Persekitaran "memahami" bahawa ia sedang mengedit kod. Editor - tidak. Dan ini termasuk autolengkap, navigasi, penyerlahan sintaksis dan, kadangkala, kesilapan semantik. Ia seolah-olah lebihan, perkara kecil yang bagus, kemanjaan. Tetapi ia bertukar menjadi satu keperluan selepas saiz projek melebihi had tertentu. Dan dengan mengambil kira rangka kerja moden yang besar, had ini datang hampir serta-merta.

Ya, pada projek dengan sedozen fail dan beberapa ribu baris, tambah ini tidak nyata dalam semua kemuliaannya. Editor juga boleh melakukan autolengkap yang sama, tetapi ia tidak akan menyingkirkan pilihan yang tidak bermakna. Dan jika saiz projek menghampiri 100 ribu baris dan terdiri daripada beribu-ribu fail, tidak mengira perpustakaan, maka menjadi masalah untuk memilih nama yang dikehendaki dari mishmash nama pembolehubah, kaedah kelas lain, dan hanya kata-kata dari komen ( Saya mempunyai ini dalam vim, saya tidak tahu, mungkin mereka membetulkannya). Petua pintar menghapuskan keperluan untuk mengingati nama fungsi yang diperlukan dan parameter mereka. Selalunya ini adalah mustahil secara fizikal.

Bercakap tentang projek. Semua IDE mempunyai konsep ini. Tetapan, sumber dilampirkan padanya, anda boleh mencari, dsb. Dalam editor, ini paling baik adalah direktori sistem fail terbuka. Kadang-kadang lebih sikit.

Penyepaduan dengan penyahpepijat dalam editor juga meninggalkan banyak perkara yang diingini. Ujian unit dan pengelogan sedikit sebanyak menyelamatkan keadaan, tetapi kadangkala anda tidak boleh melakukannya tanpa penyahpepijat.

Seseorang mungkin berpendapat bahawa editor moden sudah melaksanakan banyak fungsi ini dan sama sekali tidak kalah dengan IDE yang paling canggih. Saya tidak bersetuju. Pertama, tiada pelaksanaan sepenuhnya. Mereka tidak bekerja sebagaimana mestinya. Kedua, memasang semua ini sudah menjadi tugas yang agak sukar. Ya, walaupun konfigurasi fungsi dalaman editor sudah tidak penting. Cuba, katakan, dayakan penomboran baris dalam emacs! Selain itu, selalunya fungsi yang diperlukan dilaksanakan oleh berpuluh-puluh pemalam, tidak jelas bagaimana mereka berinteraksi antara satu sama lain. Dan selalunya mereka juga mempunyai berpuluh-puluh versi dan cawangan, yang tidak selalunya serasi, dikonfigurasikan secara aneh, dsb. Anda boleh, sudah tentu, menghabiskan sebulan untuk menyediakan dan memasang segala-galanya (yang juga ramai peminat), tetapi ini hanya akan membawa editor lebih dekat ke tahap IDE. Sebagai contoh, mari kita kembali ke projek yang sama - saya mencuba Projek di bawah vim dan projektil di bawah emacs dan beberapa pemalam lain. Jika Projek lebih kurang memenuhi keperluan saya (walaupun dalam versi terkini saya tidak dapat mencipta projek sama sekali kerana pepijat), maka peluru meninggalkan kesan yang sangat negatif.

Walau bagaimanapun, editor mempunyai beberapa bidang aplikasi di mana mereka, sekurang-kurangnya, memberikan persaingan yang layak kepada persekitaran pembangunan.

Pertama, mereka berprestasi lebih baik pada projek kecil. Tidak ada gunanya memuatkan penuai IDE untuk bekerja dengan projek 10-20 fail. Lebih mudah untuk membetulkan 3-4 baris dalam editor.

Kedua, dalam beberapa kawasan tertentu semua kelebihan IDE diratakan. Sebagai contoh, pembangunan peringkat rendah untuk Linux. Saya belum melakukan ini, tetapi berdasarkan struktur kod dan keutamaan pembangun (kira-kira 70% - emac dan klon, 25% - vim, 5% - sejenis eksotik seperti jed), IDE tidak mempunyai apa-apa untuk dilakukan di sana. Semua kod yang diperlukan untuk bekerja dikumpul, biasanya dalam satu atau dua fail, dan tidak perlu melompat sepanjang keseluruhan projek. Dan autolengkap tidak akan banyak membantu apabila memilih daripada sedozen atau dua fungsi dengan nama yang hampir sama.

Ketiga, editor boleh bekerja dengan lebih daripada sekadar kod. Semua kuasa mereka boleh digunakan apabila bekerja dengan fail csv atau xml. Atau perkara lain yang kadangkala menjadi perlu, seperti artikel atau surat. Dan anda tidak perlu belajar semula, cari program yang selesa atau ingat kekunci panas - semuanya ada di tangan, semuanya sama.

Keempat, keupayaan untuk bekerja dengan bahasa yang tidak ada IDE yang waras. Katakan, dengan delima yang sama, persekitaran tidak banyak membantu saya. SublimeText ternyata cukup. Walaupun saya tidak bekerja dengan projek ruby ​​​​yang besar, mungkin IDE akan menunjukkan dirinya di sana.

Dan kelima, kemungkinan pengembangan yang terkenal. Dengan pemalam yang baik, editor menjadi sangat mudah! Ditambah keseronokan khusus untuk terus menala instrumen utama anda dan perasaan kawalan penuh di atas ia sangat bernilai.

Jumlah

Saya tidak begitu suka IDE, walaupun ia mungkin kelihatan begitu daripada teks sebelumnya. Saya menganggapnya agak dahsyat, dengan sekumpulan fungsi yang tidak perlu, perlahan dan memerlukan sumber. Dan yang terbaik daripada mereka agak mahal. Lebih-lebih lagi, saya percaya menggunakan IDE melegakan dan mengikat anda kepada diri sendiri. Bagi editor, sebaliknya adalah benar. Ditambah kebolehcapaian dan kemungkinan penalaan halus untuk memenuhi keperluan anda. Sekurang-kurangnya vim dan emacs. Pada akhirnya, saya hanya suka mereka. Sebagai contoh, saya menulis artikel ini dalam Emacs.

Tetapi industri (dan pengurusan) menentukan keperluannya sendiri. Jika anda tidak menggunakan IDE, prestasi akan menurun dengan ketara. Tetapi tiada siapa yang akan memberi anda setengah jam untuk mencari koma yang hilang dalam 10 ribu baris kod. Ini semua harus dilakukan secara automatik dan diperbetulkan secara automatik. Saya juga kadang-kadang suka menggali kod tanpa sebarang alat - tetapi di tempat kerja ini adalah pembaziran masa yang tidak boleh diterima.

Selepas semua percubaan dan kesilapan saya, saya sampai pada kesimpulan ini - editor boleh gunakan untuk pembangunan, tetapi dengan IDE, selepas had tertentu ia tidak membandingkan dan menggunakan editor untuk sesuatu yang anda dibayar adalah kemewahan yang tidak mampu dimiliki. Ya, jika anda menggunakan amalan pembangunan yang betul, reka bentuk/kod kod dokumen dengan betul, dan mengikut piawaian, anda boleh memperbaiki kelemahan sedia ada editor. Tetapi kita tidak hidup dalam dunia yang ideal, jadi menggunakan IDE adalah satu keperluan, tanpa mengira keinginan kita.

Kami membentangkan kepada perhatian anda adaptasi artikel oleh Martin Heller, pengaturcara dan editor sumber JavaWorld. Anda mungkin pernah mendengar tentang tiga IDE paling popular untuk pembangunan bahasa Jawa. 90 peratus pengaturcara industri menggunakan sama ada Eclipse, NetBeans atau IntelliJ IDEA, dan setiap IDE ini mempunyai kelebihan dan kekurangannya sendiri. Dalam artikel ini kami akan cuba menerangkannya supaya anda faham yang mana satu yang sesuai untuk anda. Walaupun, sudah tentu, adalah lebih baik untuk mencuba ketiga-tiga di tempat kerja dan mengetahui apa yang paling sesuai untuk anda. Tiada ulasan boleh menggantikan ini. Saya pernah bekerja dengan IDE ini sebelum ini, tetapi untuk kajian ini saya memasang IntelliJ IDEA Ultimate 2016.2, Eclipse Neon Java EE dan NetBeans 8.1 Java EE pada komputer riba MacBook Pro. Saya menguji IDE pada beberapa projek Java sumber terbuka.

Apa yang Diharapkan daripada IDE

IDE moden untuk "pembangun Java yang sihat" harus menyokong Java 8, Scala, Groovy, serta bahasa maya yang lain mesin Java yang selalu digunakannya. Sokongan untuk pelayan aplikasi utama dan rangka kerja web yang paling popular, termasuk Spring MVC, JSF, Struts, GWT, Play, Wicket, Grails dan Vaadin, juga berguna. IDE mesti serasi dengan mana-mana binaan sistem kawalan versi, seperti Ant, Maven atau Gradle, bersama-sama dengan Git, SVN, CVS, Mercurial atau Bazaar. Selain itu, untuk persekitaran pembangunan adalah penting untuk dapat bekerja dengan pangkalan data dan lapisan pelanggan tindanan anda, untuk mempunyai sokongan untuk JavaScript terbina dalam, TypeScript, HTML, SQL, Halaman JavaServer, Hibernate, serta Kegigihan Java. API. Akhir sekali, adalah logik untuk berharap bahawa IDE akan membolehkan anda mengedit, mencipta, nyahpepijat dan menguji sistem tanpa tekanan yang tidak perlu. Sebaik-baiknya, persekitaran pembangunan menyokong bukan sahaja penyiapan kod pintar, tetapi juga pemfaktoran semula pintar dan metrik kod. Dalam kebanyakan kes, ia berguna untuk menyokong rangka kerja dan stub ujian. Jika pasukan anda menggunakan sistem tiket dan CI/CD, anda memerlukan IDE untuk dapat menyambung kepada mereka. Dan tentukan sama ada anda memerlukan penggunaan dan penyahpepijatan dalam bekas dan awan. Kami telah menyenaraikan hanya jangkaan asas (mungkin anda mempunyai sesuatu untuk ditambah), dan sekarang mari kita lihat dengan lebih dekat pesaing kami.

IDEA IntelliJ


Dari segi ciri dan harga, IntelliJ IDEA terdapat dalam dua versi: edisi Komuniti percuma dan edisi Ultimate berbayar dengan fungsi lanjutan. Edisi komuniti direka untuk pembangunan JVM dan Android. Versi percuma menyokong Java, Kotlin, Groovy dan Scala; Android; Maven, Gradle dan SBT; berfungsi dengan sistem kawalan versi Git, SVN, Mercurial dan CVS. Edisi muktamad sesuai untuk pembangunan web dan perusahaan. Versi IDE ini bukan sahaja berfungsi dengan Git, SVN, Mercurial dan CVS, tetapi juga dengan Perforce, ClearCase dan TFS; di dalamnya anda boleh menulis dalam JavaScript dan TypeScript; secara semula jadi ada Sokongan Java EE, Spring, GWT, Vaadin, Play, Grails dan beberapa rangka kerja lain. Dan, sudah tentu, kami tidak boleh melakukannya tanpa SQL dan alat untuk bekerja dengan pangkalan data. Idea yang membimbing pembangun IDE ini apabila membentuk dasar penetapan harga ialah versi komersilnya (Multimate) akan mengambil tempatnya pada komputer profesional, yang menyebabkan produktiviti mereka akan meningkat. Jika pengaturcara Java memperoleh $50 ribu setiap tahun (atau lebih), pulangan dari apa yang dia belanjakan IDE berbayar Pelaburan IntelliJ IDEA ($500 untuk langganan tahunan) akan berlaku dengan sangat cepat disebabkan oleh pecutan sedikit kerjanya. Pada tahun-tahun berikutnya, harga untuk perniagaan jatuh, untuk pemula dan pekerja bebas harganya jauh lebih rendah, dan untuk pelajar, guru, juara Java dan pembangun sumber terbuka ia adalah percuma sepenuhnya. IntelliJ IDEA mengagumkan dengan pemahaman kod yang mendalam, ergonomik pintar, ciri pembangunan terbina dalam dan sokongan berbilang bahasa.
Rajah 1. IntelliJ IDEA menunjukkan bilangan amaran dan tekaan berdasarkan analisis statistik kod Java. Anda boleh mengkaji andaian dengan lebih terperinci dengan mengklik padanya, seperti yang ditunjukkan dalam gambar; dalam banyak kes anda akan menerima senarai dengan pilihan dan pilihan pembetulan.

Pemahaman yang mendalam tentang kod

Penonjolan sintaks dan penyiapan kod mudah adalah perkara biasa untuk mana-mana editor Java moden. IDEA pergi lebih jauh dengan menawarkan "pelengkapan automatik pintar." Istilah ini bermaksud bahawa persekitaran pembangunan menunjukkan senarai simbol yang paling berkaitan yang boleh digunakan dalam konteks tertentu. Senarai simbol bergantung bukan sahaja pada konteks seperti itu, yang "diterima secara umum", tetapi pada gaya pengaturcaraan pembangun, pada kekerapan dia menggunakan pengendali tertentu. "Penyelesaian Rantaian" malah menunjukkan senarai simbol berkenaan yang dibenarkan melalui kaedah atau pemeroleh dalam konteks semasa. Selain itu, untuk ahli statik atau pemalar, IDEA secara automatik menambah sebarang pernyataan import yang diperlukan. Dalam semua kes autolengkap, IDEA cuba meneka jenis simbol pada masa jalan, memperhalusi pemilihannya dan juga menggunakan jenis hantaran jika perlu. Kod Java selalunya menyertakan coretan daripada bahasa lain sebagai rentetan. IDEA boleh menyuntik kod SQL, XPath, HTML, CSS atau JavaScript ke dalam literal rentetan Java. Dalam pengertian ini, IDE boleh memfaktorkan semula kod dalam pelbagai bahasa. Contohnya, jika anda menamakan semula kelas dalam pemetaan JPA, IDEA akan mengemas kini entiti JPA dan kelas ekspresi yang sepadan. Apabila memfaktorkan semula sekeping kod, pembangun mempunyai satu keinginan (agak semula jadi): agar semua pendua kod ini turut difaktorkan semula. IDEA Ultimate mencari pendua dan serpihan yang serupa dan juga menggunakan pemfaktoran semula padanya. IntelliJ IDEA menghuraikan kod apabila dimuatkan dan terus semasa anda memasukkannya. Ia menunjukkan masalah yang disyaki (seperti dalam imej kami di atas) dan secara pilihan menawarkan senarai kemungkinan pembetulan pantas kepada masalah yang ditemui.

Ergonomik


IntelliJ IDEA direka bentuk supaya tidak menjatuhkan pembangun daripada keadaan produktiviti yang mengalir apabila dia sudah berada di dalamnya. Tetingkap Projek, ditunjukkan dalam gambar pertama di sebelah kiri, hilang dengan klik tetikus mudah supaya pengaturcara boleh memfokus pada tetingkap editor kod. Untuk semua tindakan yang diperlukan semasa menulis kod, terdapat pintasan papan kekunci untuknya. panggilan cepat, termasuk definisi simbol dalam tetingkap timbul. Pada mulanya, semua kombinasi ini sukar untuk diingat, tetapi secara beransur-ansur anda terbiasa dengannya dan hanya menggunakannya. Walau bagaimanapun, walaupun pengaturcara tidak menggunakan pintasan papan kekunci, seperti yang ditunjukkan oleh amalan, dia membiasakan diri bekerja dalam IDEA dengan mudah dan cepat. Saya ingin mengambil perhatian terutamanya penyahpepijat IDEA: nilai pembolehubah dipaparkan terus dalam tetingkap editor, bersebelahan dengan kod sumber yang sepadan. Apabila keadaan pembolehubah berubah, warna serlahan juga berubah.

Alat terbina dalam

IntelliJ IDEA menyediakan antara muka tunggal untuk berinteraksi dengan kebanyakan sistem kawalan versi, termasuk Git, SVN, Mercurial, CVS, Perforce dan TFS. Anda boleh menguruskan perubahan secara terus dalam IDE, yang sangat mudah. Apabila saya menguji IDEA, saya mempunyai keinginan untuk mempunyai perubahan terkini dalam kod sumber dipaparkan dalam tetingkap editor sebagai anotasi (seperti yang berlaku, sebagai contoh, dalam Visual Studio). Ternyata, IDEA mempunyai pemalam khas untuk ini. IDEA juga disertakan dengan alat binaan, masa jalan ujian, alat liputan dan tetingkap terminal terbina dalam. IntelliJ tidak mempunyai profiler sendiri, tetapi profil pihak ketiga boleh disambungkan kepadanya menggunakan pemalam. Contohnya, YourKit, yang dicipta oleh bekas pembangun utama JetBrains, atau VisualVM (yang merupakan versi pembungkus semula NetBeans profiler). Penyahpepijatan dalam Java boleh menjadi menyakitkan apabila pelbagai perkara misteri berlaku pada kelas yang anda tidak mempunyai sumbernya. IDEA termasuk decompiler untuk kes sedemikian. Pengaturcaraan sebelah pelayan di Java memerlukan interaksi yang kerap dengan pangkalan data, jadi pengaturcara IDEA Ultimate akan menghargai kemudahan alatan untuk bekerja dengan SQL dan pangkalan data. Tetapi jika keupayaan mereka tidak mencukupi untuk seseorang, anda boleh membeli versi IDEA Ultimate dengan SQL IDE (DataGrip) terbina dalam. Walau bagaimanapun, ia akan lebih mahal sedikit daripada langganan IDEA Ultimate biasa. IntelliJ IDEA menyokong semua pelayan aplikasi JVM utama, dan membolehkan anda menggunakan dan nyahpepijat pada pelayan ini, yang menghapuskan pengaturcara Java Kesukaran perusahaan. IDEA juga menyokong Docker (melalui pemalam yang menambahkan tetingkap alat Docker khas pada persekitaran pembangunan. Dengan cara ini, IDEA mempunyai banyak pemalam.

Poliglot sebenar

IDEA telah mengembangkan sokongan kod untuk Spring, Java EE, Grails, Play, Android, GWT, Vaadin, Thymeleaf, Android, React, AngularJS dan rangka kerja lain. Anda mungkin perasan bahawa tidak semuanya adalah khusus Java. IDEA "memahami" bahasa lain terus dari kotak - Groovy, Kotlin, Scala, JavaScript, TypeScript dan SQL. Jika anda tidak menemui bahasa yang anda perlukan dalam senarai ini, pada masa ini Terdapat 19 pemalam bahasa IntelliJ, khususnya menyokong R, Elm dan D.


Selama bertahun-tahun, Eclipse dengan yakin memegang telapak tangan dalam populariti di kalangan IDE Java. Persekitaran ini adalah percuma sepenuhnya, sumber terbuka, ditulis terutamanya dalam Java. Walau bagaimanapun, seni bina modularnya membolehkan Eclipse digunakan dengan bahasa lain. Projek Eclipse, yang dimulakan oleh IBM, muncul pada tahun 2001. Mereka mahu menggantikan keluarga persekitaran pembangunan IBM Visual Age berdasarkan Smalltalk. Nah, matlamat utama, seperti namanya, adalah untuk mengatasi Microsoft Visual Studio (gerhana dalam bahasa Inggeris bermaksud eclipse). Mudah alih Java membantu Eclipse menjadi persekitaran merentas platform: IDE ini berjalan pada Linux, Mac OS X, Solaris dan Windows. Untuk lebih baik atau lebih teruk, Java Standard Widget Toolkit (SWT) bertanggungjawab sekurang-kurangnya sebahagiannya penampilan Gerhana. Eclipse berhutang prestasinya (atau, seperti yang dikatakan oleh beberapa orang ramai, kekurangannya) kepada JVM. Eclipse berfungsi agak perlahan, kerana ia berakar pada perkakasan yang agak lama dan versi kuno JVM. Malah pada hari ini ia kelihatan perlahan, terutamanya jika anda melampirkan banyak pemalam padanya. Beberapa overhed sumber Eclipse boleh dikaitkan dengan pengkompil tambahan terbina dalam, yang berjalan apabila fail dimuatkan atau kod dikemas kini. Ini adalah perkara yang berguna; ia menangkap ralat semasa memasukkan teks. Tanpa mengira binaan, projek Eclipse mengekalkan model kandungan yang mengandungi maklumat tentang hierarki jenis, rujukan dan pengisytiharan unsur Java. Versi semasa Eclipse dipanggil Neon (4.6.0). Saya memasang Eclipse Java EE IDE untuk pembangun web (ini bukan satu-satunya pilihan, anda boleh memilih sesuatu yang lain). Ia mengandungi minimum SDK Eclipse, dan pemalam ditambah atas permintaan. Ngomong-ngomong, bekerja dengan pemalam dalam IDE ini bukan untuk mereka yang lemah hati. Pemalam pihak ketiga sering bercanggah antara satu sama lain, walaupun spesifikasi rasmi mereka tidak mengatakan apa-apa tentang perkara ini.
Rajah 2: Dari kiri ke kanan terdapat empat panel alatan Eclipse: Pakej Explorer, Editor Java, Struktur Kelas Java dan Senarai Tugas. Projek yang dimuatkan ke Eclipse dalam gambar ini ialah rangka kerja ujian JUnit. Panel boleh ditukar dengan mudah.

Sokongan pemalam

Ekosistem pemalam Eclipse adalah kedua-duanya titik kuat IDE ini dan salah satu masalah utamanya. Ia adalah kerana ketidakserasian pemalam yang kadangkala keseluruhan perhimpunan ranap, dan pengaturcara perlu mula bekerja semula. Pada masa ini terdapat lebih 1,700 pemalam yang ditulis untuk Eclipse, rasmi dan tidak rasmi, yang mungkin berfungsi dengan baik atau tidak. Pemalam Eclipse menyokong lebih daripada 100 bahasa pengaturcaraan dan hampir 200 rangka kerja pembangunan aplikasi. Kebanyakan pelayan Java juga disokong: jika anda menetapkan sambungan pelayan baharu daripada Eclipse, anda akan dibawa ke senarai folder vendor di mana anda akan menemui kira-kira 30 pelayan aplikasi. Hanya pilihan Apache Tomcat akan ada sebanyak sembilan keping. Vendor komersial cenderung untuk menggabungkan penyelesaian mereka bersama-sama: contohnya, terdapat hanya satu item Red Hat JBoss Middleware, dan di dalamnya anda akan menemui alatan pelayan WildFly dan EAP, serta JBoss AS.

Mengedit, memfaktorkan semula dan menyahpepijat

Pengalaman pertama anda dengan Eclipse boleh mengelirukan malah mengelirukan. Langkah pertama ialah menyediakan Eclipse dan membiasakan diri dengan seni bina konsep ruang kerja, pandangan dan pandangannya. Ini semua ditentukan oleh pemalam yang telah anda pasang. Untuk pembangunan Java sebelah pelayan, anda mungkin akan menggunakan paparan penyemakan imbas Java, Java EE dan Java, paparan Package Explorer, paparan penyahpepijatan, paparan penyegerakan arahan alat web, paparan pembangunan pangkalan data dan paparan penyahpepijatan pangkalan data . Dalam amalan, semuanya masuk akal apabila anda membuka tingkap yang anda perlukan. Eclipse hampir selalu menawarkan beberapa cara untuk menyelesaikan masalah tertentu. Sebagai contoh, anda boleh melihat kod menggunakan perspektif penyemakan imbas Java. Apa yang perlu dipilih adalah soal citarasa dan pilihan. Carian Java khas membolehkan anda mencari pengisytiharan, rujukan dan kejadian pakej, jenis, kaedah, medan Java. Anda juga boleh menggunakan akses carian pantas dan pratonton. Corak kod biasa boleh dihasilkan daripada templat kod. Java Refactoring dalam Eclipse menyokong 23 operasi, bermula daripada operasi penamaan semula biasa kepada transformasi yang kurang jelas (seperti dalam buku Martin Fowler). Eclipse menyokong penyahpepijatan tempatan dan jauh, dengan syarat anda menggunakan JVM yang menyokong penyahpepijatan jauh. Penyahpepijatan adalah agak standard: anda tentukan titik kawalan, dan kemudian lihat pembolehubah dalam tab nyahpepijat. Sudah tentu, anda boleh melangkah melalui kod anda dan menilai ungkapan. Eclipse mempunyai pangkalan dokumentasi yang luas daripada umur yang berbeza, nilai dan utiliti. Malangnya, mencari imej dalam arahan yang tidak sepadan dengan versi semasa, contohnya, dengan antara muka dan susun atur butang yang lapuk, adalah kejadian biasa untuk IDE ini. Malangnya, masalah kemas kini dokumentasi lewat adalah sangat biasa untuk mana-mana projek kod sumber.


NetBeans bermula sebagai projek pelajar universiti di Prague pada tahun 1996. Pada tahun 1997, IDE menjadi produk komersial, dan pada tahun 1999 ia dibeli oleh Sun Microsystems (ibu bapa Java) dan pada tahun berikutnya membentangkan keluaran sumber terbuka. Versi semasa 8.1 berjalan pada mesin yang menjalankan Windows, Mac OS X, Linux dan Solaris. Nah, pakej mudah alih boleh dijalankan pada mana-mana sistem yang mana mesin Java wujud. Saya memuat turun berkas Java EE untuk diri saya sendiri, ia adalah salah satu daripada enam pakej muat turun yang mungkin. Himpunan ini menyokong JavaScript dan HTML, GlassFish dan Tomcat, tetapi tidak menyokong PHP, C/C++/Fortran, Groovy dan Grails: ia boleh didapati dalam pakej "Semua Termasuk" (atau ringkasnya "Semua"). Walau bagaimanapun, jika saya mahu, saya boleh memuat turun sokongan untuk bahasa di atas pada bila-bila masa dengan memilih pemalam yang sesuai (atau mana-mana yang lain). NetBeans mempunyai lebih sedikit daripada mereka daripada Eclipse, tetapi mereka biasanya tidak bercanggah antara satu sama lain. Musim luruh ini, Oracle (yang memperoleh NetBeans selepas memperoleh Sun Microsystems) memutuskan untuk memindahkan persekitaran pembangunan ini di bawah sayap Yayasan Perisian Apache, bersama-sama dengan semua hak, kod sumber, tanda dagangan, domain "netbeans.org" dan beberapa infrastruktur lain elemen. Oleh itu, masa depan projek itu masih kabur, walaupun sistem itu sebelum ini mempunyai keistimewaan tertentu yang berkaitan. Oleh itu, NetBeanslah yang pertama menerima sokongan untuk Java 8 hampir sejurus selepas keluaran platform yang dikemas kini, dan dipanggil "IDE rasmi untuk Java 8." Walau bagaimanapun, sebulan selepas dikeluarkan, kelebihan ini telah hilang: pada masa itu IDE lain turut menerima sokongan untuk Java 8. Walau bagaimanapun, saya ingin menegaskan bahawa sokongan Java 8 NetBeans benar-benar bagus, dan IDE bagus untuk menganyam helah Java 8 ke dalam kod "lama". Editor, penganalisis kod dan penukarnya akan membantu pengaturcara menaik taraf kod menggunakan ciri binaan Java 8 - ungkapan lambda, pengendali berfungsi dan rujukan kaedah. Pemalam JavaScript dalam NetBeans 8 melakukan kerja yang baik untuk menyokong Node.js dan alatan terkini JavaScript seperti Gulp dan Mocha, serta sokongan untuk penterjemah JavaScript Nashorn.
Rajah 3. Di sini NetBeans menjalankan projek berasaskan Maven yang sama yang IntelliJ IDEA dibuka dalam Rajah 1. Perhatikan fungsi lanjutan dalam menu konteks dan submenu pemfaktoran semula

Penyuntingan dan pemfaktoran semula

NetBeans Editor menyokong bahasa, mengesan ralat semasa anda menaip dan membantu anda dengan petua alat dan penyiapan kod pintar. Mengikut perasaan subjektif, IDE mengatasi tugas ini lebih cepat daripada Eclipse, tetapi agak perlahan daripada IntelliJ IDEA. Di samping itu, NetBeans mempunyai spektrum penuh alat pemfaktoran semula (seperti yang ditunjukkan dalam Rajah 3), yang membolehkan pengaturcara menyusun semula kod tanpa memecahkannya, melakukan analisis sumber, dan juga menawarkan pelbagai petunjuk untuk pembetulan pantas atau sambungan kod. NetBeans termasuk alat reka bentuk Swing GUI, yang dahulunya dikenali sebagai "Projek Matisse". Pembangun sangat menghargai alat pemfaktoran semula automatik Inspect & Transform, yang diperkenalkan dalam NetBeans 7.1. Ia membolehkan anda menganalisis kod projek dan membuat cadangan penambahbaikan. Walaupun secara peribadi, saya lebih suka menguji semua kod saya sendiri dengan ujian unit dahulu, dan kemudian menjalankan alat yang boleh membuat perubahan radikal. Saya telah berulang kali mengalami pelbagai jenis pembetulan automatik yang membawa kepada akibat yang tidak boleh diperbaiki.

Membina, Menyahpepijat dan Pemprofilan

NetBeans mempunyai sokongan asli yang sangat baik untuk Maven dan Ant, serta pemalam untuk Gradle. Saya sangat gembira apabila saya mendapati bahawa projek Maven telah dianggap sebagai "asli" oleh sistem. Ini bermakna ia hanya boleh dibuka dan bukannya diimport. NetBeans juga mengandungi paparan grafik yang menarik (dan berguna) untuk kebergantungan Maven. Penyahpepijat Java NetBeans tidak buruk, tetapi ia disertakan dengan beberapa kaveat. Penyahpepijat visual yang berasingan membolehkan pengaturcara mengambil tangkapan skrin antara muka grafik pengguna dan meneroka antara muka aplikasi yang dibuat menggunakan JavaFX dan Swing. Pemprofil NetBeans menjadikannya lebih jelas cara CPU dan memori digunakan dan mempunyai alat yang sangat baik untuk mencari kebocoran memori.

Perbandingan trio gergasi

Saya telah menggunakan ketiga-tiga IDE, Eclipse, NetBeans dan IntelliJ IDEA, selama bertahun-tahun dalam susunan kronologi yang disenaraikan. Setiap kali saya beralih kepada IDE yang berbeza, saya merasakan produktiviti saya meningkat. Tetapi walaupun saya yakin bahawa IDEA adalah pilihan terakhir saya, kadangkala saya terpaksa kembali kepada salah satu daripada dua IDE yang tinggal. Ini berlaku, sebagai contoh, pada masa Eclipse merupakan satu-satunya alat yang menyokong pembangunan Android (hari ini terdapat Android Studio, IDE rasmi semasa untuk Android, ia berdasarkan IntelliJ IDEA). Sudah tentu, ketiga-tiga IDE mempunyai peminat dan pengkritik mereka. Saya mengenali ramai pembangun Java yang menyukai IntelliJ IDEA, serta peminat setia Visual Studio C++ dan C#. Lebih kerap daripada tidak, mereka ini gembira dengan fakta bahawa produktiviti mereka telah meningkat, dan kos langganan tahunan dibayar balik selepas hanya beberapa minggu menggunakan versi berbayar IDEA. Walau bagaimanapun, pengguna NetBeans dan Eclipse juga sering melekat pada alatan mereka dan tertanya-tanya mengapa pengaturcara lain sanggup membayar wang untuk IDEA. Saya akan menasihati pembangun Java baharu supaya menjauhi Eclipse. Walaupun fakta bahawa ia masih merupakan IDE yang paling popular untuk Java, ia adalah sukar untuk pemula: ia adalah mudah untuk tersesat di alam liar Eclipse, kedua-dua semasa penggunaan sistem dan semasa kerja harian. Eclipse mempunyai ekosistem pemalam yang paling luas daripada semua IDE, dan juga paling berkemungkinan ranap kerana memasang set pemalam yang sama ini yang tidak serasi. Malangnya, semasa menggunakan Eclipse, saya berulang kali terpaksa mengeluarkan satu lagi pemasangan IDE ini yang rosak dan memasang berkas "bersih". NetBeans bagus untuk kebanyakan pembangun, ia mempunyai profiler yang hebat, dan kadangkala saya menggunakannya. Walau bagaimanapun, saya lebih suka membayar untuk IntelliJ IDEA Ultimate. Dan masa depan NetBeans masih tidak jelas. Untuk pembangun Java baharu yang belum mempunyai bajet untuk membeli alatan, saya syorkan menggunakan NetBeans atau IntelliJ IDEA Community Edition bergantung pada keperluan mereka. Yang pertama patut dipilih untuk mereka yang mengekod pelayan Java, tetapi hanya jika anda tidak termasuk dalam kategori mereka yang boleh mendapatkan IntelliJ IDEA Ultimate secara percuma atau dengan diskaun yang besar (pelajar atau pengaturcara yang sedang membangunkan sumber terbuka projek).

IDE Java "Ringan".

Hari ini, kebanyakan pembangun Java menggunakan IDEA, NetBeans atau Eclipse, tetapi kadangkala terdapat keperluan untuk persekitaran pembangunan yang lebih ringan atau editor kod seperti Teks Sublime, emacs atau vim yang menyokong pemalam Java. Saya telah menyenaraikan pilihan yang munasabah di bawah untuk mereka yang mencari sesuatu yang lebih ringan:
  • DrJava - kecil persekitaran bebas pembangunan. Ia dicipta untuk pelajar di Universiti Rice, dan ia telah menjadi agak popular: DrJava telah dimuat turun lebih daripada 2 juta kali. DrJava direka untuk mempromosikan pembangunan dipacu ujian. Rangka kerja ini mengandungi editor kod pintar, panel interaksi untuk menilai kod aplikasi, penyahpepijat peringkat sumber dan alat ujian unit.
  • BlueJ ialah persekitaran pembangunan Java percuma yang dicipta oleh pakar dari Universiti Kent untuk pengaturcara pemula. Persekitaran ini disokong oleh Oracle. BlueJ mempunyai antara muka yang lebih bersih dan lebih ringkas daripada IDE profesional seperti NetBeans atau Eclipse, dan juga termasuk tutorial khusus tentang asas OOP.
  • JCreator ialah satu lagi IDE Java kecil untuk Windows, ditulis dalam C++ (atas sebab prestasi). Versi berbayar Pro dilengkapi dengan penyahpepijat, sokongan untuk Ant dan wizard kod, dan versi percuma(LE) - tidak.
  • Eclipse Che ialah IDE awan berasaskan pelayar yang menyokong Java, C++, JavaScript, Python, PHP, Ruby dan SQL.

Memilih IDE Java bergantung pada projek

Saya telah cuba menerangkan faedah penting bagi setiap tiga IDE Java yang paling penting dan secara ringkas menyebut saingan kecil mereka yang berguna. Untuk memilih IDE yang betul, anda perlu menimbang kebaikan dan keburukan dan membandingkannya dengan keperluan anda dan keperluan projek anda. Jika anda menyertai pasukan, adalah idea yang baik untuk menggunakan IDE yang sama seperti pembangun lain, walaupun ia tidak diperlukan. Jika pasukan anda mengehos sumber di GitHub, ia sememangnya lebih mudah jika IDE anda menyokong GitHub. Ya, anda boleh mengendalikan pemindahan kod tanpa IDE menggunakan klien GitHub atau baris arahan git. Tetapi sejauh manakah lompatan sedemikian berkesan antara sistem yang berbeza? Ia juga penting bahawa IDE menyokong sistem binaan. Sebagai contoh, jika ini adalah Maven, anda tidak mungkin mahu membina semula sistem dalam Ant untuk ujian tempatan. Nasib baik, ketiga-tiga IDE Java yang besar menyokong Ant, Maven, dan Gradle, sama ada di luar kotak atau dengan pemalam. Tetapi untuk IDE "kecil" ini mungkin tidak benar. Ia adalah keinginan semula jadi untuk persekitaran pembangunan untuk menyokong versi JRE yang digunakan dalam projek. Jika versi tidak sepadan, terdapat kebarangkalian tinggi untuk mendapat banyak pepijat tambahan, yang, sebagai contoh, akan muncul dalam diri anda, tetapi tidak pada ahli pasukan lain. Tidak mungkin keadaan sedemikian akan memberi kesan yang baik kepada karma anda. Terus terang, ketidakkonsistenan JRE lebih berkemungkinan berlaku disebabkan ralat konfigurasi berbanding kekurangan sokongan IDE, melainkan IDE belum dikemas kini kepada versi baru Jawa. Hanya percaya bahawa jika IDE anda menyokong sepenuhnya rangka kerja dan teknologi yang digunakan dalam projek, ia benar-benar membantu mempercepatkan kerja. Anda kemungkinan besar akan menguruskannya. Tetapi, jika IDE memahami cara penyataan JPA berkaitan dengan entiti JPA dan kelas ekspresi (seperti IntelliJ), anda akan menghabiskan lebih sedikit masa pada kod berkaitan JPA berbanding jika anda salah faham sepenuhnya. Nah, jika IDE menyokong rangka kerja ujian dan pelaksana kod yang digunakan untuk projek, anda boleh menjalankan ujian tanpa mengubah persekitaran kerja. Ini juga akan mempercepatkan proses pembangunan. Akhirnya, kerja berjalan lebih pantas jika IDE serasi dengan penjejakan pepijat dan sistem tiket projek. Sekali lagi, anda boleh menggunakan pelanggan kendiri atau web, katakan JIRA, tetapi sukar untuk tidak bersetuju bahawa menyemak tiket adalah lebih pantas tanpa menukar tetingkap, sambil kekal terus dalam IDE.

Percuma atau berbayar?

Selepas menguji IntelliJ IDEA Ultimate, saya mendapat perasaan persekitaran pembangunan yang betul. Sejenis Cadillac dunia IDE. Sekali lagi, walaupun ia bukan percuma, saya fikir keuntungan produktiviti daripada menggunakannya adalah berbaloi dengan langganan tahunan. Bagi pemula yang tidak mampu membeli langganan tahunan IntelliJ IDEA Ultimate, saya mengesyorkan menggunakan NetBeans dan bukannya Eclipse. Sudah tentu, ekosistem pemalam Eclipse jauh lebih dibangunkan hari ini daripada mana-mana IDE lain, tetapi ia sangat besar dan tidak terawat: pembangun pemula berisiko terperangkap di dalam hutan IDE dan bukannya tenggelam dalam kerja. Saya juga menyentuh tentang alternatif "ringan", dua daripadanya direka khusus untuk tujuan pendidikan. Nah, jika anda baru mula belajar bahasa dan anda lebih suka persekitaran minimalis - mengapa tidak?