Saya menggunakan gerhana untuk mengembangkan aplikasi web. Baru hari ini saya telah memperbarui versi struts saya dengan mengubah file JAR. Saya mendapat peringatan di beberapa tempat bahwa metode sudah usang, tetapi kodenya berfungsi dengan baik.
Saya ingin tahu beberapa hal
Apakah salah menggunakan metode yang tidak digunakan atau kelas di Jawa?
Bagaimana jika saya tidak mengubah metode apa pun dan menjalankan aplikasi saya dengan peringatan yang saya miliki, apakah itu akan menimbulkan masalah kinerja.
java
methods
deprecated
Umesh Aawte
sumber
sumber
1955 Volkswagen Beetle
bahkan jika Anda ditawariCorvette Stingray
secara gratis? (0:4
lainnya: Gotcha! (0;1955 Volkswagen Beetle
dan1956 Volkswagen Beetle
dengan ban baru yang Anda tidak tahu kapan akan rusak!Jawaban:
Dari definisi usang :
Metode ini disimpan dalam API untuk kompatibilitas ke belakang untuk periode waktu yang tidak ditentukan, dan mungkin dalam rilis mendatang dihapus. Artinya, tidak, itu tidak salah , tetapi ada cara yang lebih baik untuk melakukannya, yang lebih kuat terhadap perubahan API.
Kemungkinan besar tidak. Ini akan terus bekerja seperti sebelum penghentian. Kontrak metode API tidak akan berubah. Jika beberapa struktur data internal berubah ke arah metode baru yang lebih baik, mungkin ada dampak kinerja, tetapi sangat kecil kemungkinannya.
The paling lucu bantahan dalam API Java, adalah imo, yang
FontMetrics.getMaxDecent
. Alasan penghentian: Kesalahan pengejaan.sumber
Anda masih dapat menggunakan kode yang sudah usang tanpa kinerja diubah, tetapi inti dari penghentian suatu metode / kelas adalah untuk memberi tahu pengguna bahwa sekarang ada cara yang lebih baik untuk menggunakannya, dan bahwa dalam rilis yang akan datang kode yang sudah usang tersebut kemungkinan akan dihapus.
sumber
Terminologi
Dari glosari resmi Matahari:
Dari panduan cara-dan-kapan tidak lagi digunakan:
The
@Deprecated
penjelasan melangkah lebih jauh dan memperingatkan bahaya:Referensi
Benar atau salah?
Pertanyaan apakah benar atau salah menggunakan metode yang sudah usang harus diperiksa secara individual. Berikut adalah SEMUA kutipan di mana kata "usang" muncul di Java 2 Edisi Efektif :
Jadi setidaknya dengan semua metode di atas, jelas salah untuk menggunakannya, setidaknya menurut Josh Bloch.
Dengan metode lain, Anda harus mempertimbangkan masalah secara individual, dan memahami MENGAPA mereka ditinggalkan, tetapi secara umum, ketika keputusan untuk tidak berlaku lagi dibenarkan, itu akan cenderung condong ke arah yang salah daripada hak untuk terus menggunakannya.
Pertanyaan-pertanyaan Terkait
sumber
Selain dari semua tanggapan luar biasa di atas, saya menemukan ada alasan lain untuk menghapus panggilan API yang sudah tidak digunakan lagi.
Menjadi meneliti mengapa panggilan sudah usang Saya sering menemukan diri saya belajar hal-hal menarik tentang Java / API / Framework. Sering ada alasan bagus mengapa suatu metode tidak digunakan lagi dan memahami alasan-alasan ini mengarah pada wawasan yang lebih dalam.
Jadi dari perspektif pembelajaran / pertumbuhan, ini juga merupakan upaya yang bermanfaat
sumber
Ini tentu saja tidak membuat masalah kinerja - berarti usang di masa depan kemungkinan fungsi tidak akan menjadi bagian dari perpustakaan lagi, jadi Anda harus menghindari menggunakannya dalam kode baru dan mengubah kode lama Anda untuk berhenti menggunakannya, jadi Anda tidak mengalami masalah suatu hari ketika Anda meningkatkan struts dan menemukan bahwa fungsi tidak lagi ada
sumber
It certainly doesn't create a performance issue
; terlalu subjektif untuk menyatakan itu.Itu tidak salah, hanya saja tidak direkomendasikan. Ini umumnya berarti bahwa pada titik ini ada cara yang lebih baik dalam melakukan sesuatu dan Anda akan melakukan yang baik jika Anda menggunakan cara yang lebih baik. Beberapa barang usang benar-benar berbahaya dan harus dihindari sama sekali. Cara baru dapat menghasilkan kinerja yang lebih baik daripada yang usang, tetapi tidak selalu demikian.
sumber
Anda mungkin pernah mendengar istilah, "humor mencela diri sendiri". Itu adalah humor yang meminimalkan kepentingan Anda. Kelas atau metode yang sudah usang seperti itu. Itu tidak lagi penting. Ini sangat tidak penting, pada kenyataannya, itu seharusnya tidak lagi digunakan sama sekali, karena mungkin akan tidak ada lagi di masa depan.
Cobalah menghindarinya
sumber
deprecated
metode selama Anda memiliki rencana kontingensi yang baik untuk menghindari masalah jika / ketika metode tersebut hilang dari perpustakaan yang Anda gunakan. Dengan Java API itu sendiri hal ini tidak pernah terjadi tetapi dengan hal lain itu berarti akan dihapus. Jika Anda secara khusus berencana untuk tidak memutakhirkan ( walaupun kemungkinan besar dalam jangka panjang ) perpustakaan pendukung perangkat lunak Anda maka tidak ada masalah dalam menggunakandeprecated
metode.sumber
Ya itu salah.
Metode atau kelas yang sudah tidak digunakan lagi akan dihapus di versi Java yang akan datang dan tidak boleh digunakan. Dalam setiap kasus, harus ada alternatif yang tersedia. Gunakan itu.
Ada beberapa kasus ketika Anda harus menggunakan kelas atau metode yang sudah usang untuk memenuhi tujuan proyek. Dalam hal ini, Anda benar-benar tidak punya pilihan selain menggunakannya. Versi Java di masa depan mungkin memecah kode itu, tetapi jika itu adalah persyaratan Anda harus hidup dengan itu. Mungkin ini bukan pertama kalinya Anda harus melakukan sesuatu yang salah untuk memenuhi persyaratan proyek, dan itu pasti bukan yang terakhir.
Saat Anda memutakhirkan ke versi Java yang baru atau pustaka lain, terkadang metode atau kelas yang Anda gunakan menjadi usang. Metode usang tidak didukung, tetapi seharusnya tidak menghasilkan hasil yang tidak terduga. Itu tidak berarti bahwa mereka tidak akan, jadi ganti kode Anda ASAP.
Proses penghentian ada untuk memastikan bahwa penulis memiliki cukup waktu untuk mengubah kode mereka dari API lama ke API baru. Manfaatkan waktu ini. Ubah kode Anda menjadi ASAP.
sumber
Ini tidak salah, tetapi beberapa metode yang sudah usang dihapus dalam versi perangkat lunak yang akan datang, sehingga Anda mungkin akan berakhir dengan kode yang tidak berfungsi.
sumber
Removed
? Lihat definisi stackoverflow.com/questions/2941900/…Tidak salah seperti itu tetapi dapat menghemat beberapa masalah. Berikut adalah contoh di mana sangat tidak disarankan untuk menggunakan metode yang sudah usang:
http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html
Seharusnya tidak ada masalah dalam hal kinerja. API standar dirancang untuk menghormati beberapa kompatibilitas ke belakang sehingga aplikasi dapat secara bertahap disesuaikan dengan versi Java yang lebih baru.
sumber
Apakah salah menggunakan metode atau kelas yang tidak digunakan lagi di Jawa? Ini bukan "salah", masih berfungsi tetapi hindarilah sebisa mungkin.
Misalkan ada kerentanan keamanan yang terkait dengan metode dan pengembang menentukan bahwa itu adalah cacat desain. Jadi mereka mungkin memutuskan untuk tidak lagi menggunakan metode ini dan memperkenalkan cara baru.
Jadi, jika Anda masih menggunakan metode lama, Anda memiliki ancaman. Jadi berhati-hatilah dengan alasan penghinaan itu dan periksa apakah pengaruhnya terhadap Anda.
bagaimana jika tidak mengubah metode apa pun dan menjalankan aplikasi saya dengan peringatan yang saya miliki, apakah itu akan membuat masalah kinerja.
Jika penghentian karena masalah kinerja, maka Anda akan menderita masalah kinerja, jika tidak, tidak ada alasan untuk memiliki masalah seperti itu. Sekali lagi ingin menunjukkan, menyadari alasan penghinaan.
sumber
Di Jawa itu @Deprecated, di C # itu [Usang].
Saya pikir saya lebih suka terminologi C #. Itu hanya berarti sudah usang. Anda masih dapat menggunakannya jika Anda mau, tetapi mungkin ada cara yang lebih baik.
Ini seperti menggunakan Windows 3.1 daripada Windows 7 jika Anda percaya bahwa Windows 3.1 sudah usang. Anda masih dapat menggunakannya, tetapi mungkin ada fitur yang lebih baik di versi masa depan, ditambah versi masa depan mungkin akan didukung - yang usang tidak akan.
Sama untuk @Deprecated Java - Anda masih dapat menggunakan metode ini, tetapi dengan risiko Anda sendiri - di masa depan, mungkin ada alternatif yang lebih baik, dan bahkan mungkin tidak didukung.
Jika Anda menggunakan kode yang sudah usang, biasanya baik-baik saja, asalkan Anda tidak perlu memutakhirkan ke API yang lebih baru - kode yang sudah usang mungkin tidak ada di sana. Saya sarankan jika Anda melihat sesuatu yang menggunakan kode usang, untuk memperbarui untuk menggunakan alternatif yang lebih baru (ini biasanya ditunjukkan pada penjelasan atau dalam komentar usang Javadoc).
Sunting: Dan seperti yang ditunjukkan oleh Michael, jika alasan penghentian adalah karena cacat dalam fungsi (atau karena fungsi itu seharusnya tidak ada), maka jelas, orang tidak boleh menggunakan kode yang sudah usang.
sumber
Tentu saja tidak - karena seluruh Java mendapatkan @Deprecated :-) Anda dapat menggunakannya selama Java berlangsung. Tidak akan melihat adanya perbedaan, kecuali itu sesuatu yang benar-benar rusak. Artinya - harus membaca tentang itu dan kemudian memutuskan.
Namun dalam .Net, ketika sesuatu dinyatakan [Usang], buka dan bacalah segera meskipun Anda belum pernah menggunakannya - Anda memiliki peluang 50% lebih efisien dan / atau lebih mudah digunakan daripada penggantian :-))
Jadi secara umum, ini bisa sangat bermanfaat untuk menjadi techno-konservatif hari ini, tetapi Anda harus melakukan tugas membaca Anda terlebih dahulu.
sumber
Saya merasa bahwa metode usang berarti; ada metode alternatif = ive yang tersedia yang lebih baik di semua aspek daripada metode yang ada. Lebih baik menggunakan metode yang baik daripada metode lama yang ada. Untuk kompatibilitas mundur, metode lama dibiarkan usang.
sumber