javax vs java paketi


385

Javax paketinin ardındaki mantık nedir? Java'ya ne giriyor ve javax'a ne oluyor?

Ben çok kurumsal-y paketleri javax biliyorum, ama Swing, yeni tarih ve saat api (JSR-310) ve diğer J2SE paketleri de biliyorum.



İsteğe bağlı paket, açık, standart bir API'nin uygulanmasıdır (isteğe bağlı paket örnekleri JavaServlet, Java3D). javax.*İstisnalar olabilir, ancak isteğe bağlı paketlerin çoğu ad alanında kökleşir.
Şanslı

Yanıtlar:


212

Sanırım bu tarihsel bir şey - eğer mevcut bir JRE'ye ek olarak bir paket tanıtıldıysa, o şekilde geliyor javax. İlk olarak bir JRE'nin parçası olarak tanıtıldıysa (NIO gibi, sanırım) o zaman gelir java. Yeni tarih ve saat API'sinin neden javaxbu mantığa bağlı kalacağından emin değilim ... daha önceki sürümlerle çalışmak için ayrı bir kitaplık olarak da mevcut olmadıkça (faydalı olacaktır). Yıllar sonra gelen not: sonuçta içeri girdi java.

javaPaket üzerinde kısıtlamalar olduğuna inanıyorum - sınıf yükleyicilerin sadece içindeki sınıfların java.*yüklenmesine izin vermek rt.jarveya benzer bir şey yapmak için ayarlandığını düşünüyorum . (Kesinlikle bir check-in var ClassLoader.preDefineClass.)

EDIT: Resmi bir açıklama (önerilen arama orbfish ilk sayfada bir vermedi ya da öylesine) "çekirdek" vs "uzatma" hakkında hiç şüphe olmasa da, çoğu durumda belirli bir paket için kararın bir arkasındaki tarihsel sebep. Mı java.beansJava o "çekirdek" örneğin, gerçekten mi?


7
Bir okuyucunun alt-t tuşuna basması ve yazması iPad kullanarak kesip yapıştırmamdan daha mı kolay? ). Haklısınız, ama, ben ediyoruz düşünüyorum Demek download.oracle.com/javase/tutorial/ext/index.html . Hiçbir suç BTW Genellikle cevaplarınızı yararlı buluyorum Bu kabul edildi şaşırdım.
orbfish

1
"Javax" terimi, bu yorum dizisinde daha önce önerilen bağlantıda hiçbir yerde görünmüyor.
broşür

Yeni tarih ve saat API'sı aslında java.timesonuçta olduğu gibi sona erecek .
Michael Piefel

234

Başlangıçta javaxuzantılar için tasarlanmıştı ve bazen işler java'ya yükseltilecekti javax.

Bir sorun, Java paketinde olabilecek sınıfları sınırlayan Netscape (ve muhtemelen IE) idi.

Salıncak için "mezun" olarak ayarlanmış zaman javagelen javaxçeşit a vardı insanlar kendi ithalat tamamını değiştirmek zorunda kalacağını fark etmesi üzerine yukarı mini darbe. Geriye dönük uyumluluğun Java'nın birincil hedeflerinden biri olduğu düşünüldüğünde fikrini değiştirdiler.

Bu noktada, en azından topluluk için (belki Güneş için değil) tüm nokta javaxkaybedildi. Şimdi javax'ta muhtemelen olması gereken bazı şeyler var java... ama paket adlarını seçenlerin dışında, kimsenin mantığın duruma göre ne olduğunu anlayabildiğini bilmiyorum.


12
"Swing, javax'tan java'ya" mezun olmaya "ayarlandığında, bir çeşit küçük patlama oldu, çünkü insanlar tüm ithalatlarını değiştirmeleri gerektiğini anladılar." İnsanlar, üretim öncesi kalite kodunu kullanarak elde ettikleri bir regex ile başarılabilecek bir şeyden şikayet ediyorlardı?
Kızak

10
Evet. Visual Cafe'de Sun'ın javax paketinde tutmaya karar vermeden önce ikisi arasında (javax ve java) dönüştürmek için bir araç yazdım.
TofuBeer

51

javapaketler taban ve javaxpaketler uzantılardır.

Swing bir uzantıydı çünkü AWT orijinal UI API'sıydı. Swing daha sonra 1.1 versiyonunda geldi.


Salıncak 1.1'in bir parçası değildi. Swing'in 1.1 olarak kütüphane olarak çalışan bir versiyonu vardı.
Tom Hawtin - tackline

Anahtar var - "kütüphane", JDK'nın bir parçası değil. Sürüm yanlış mı? Javadoclarım JButton'un 1.3'ten beri olduğunu öne sürüyor, bu yüzden belki de hafızam beni başarısızlığa uğrattı.
duffymo

1
Peki neden javax yeni tarih ve saat API .. tarih ve saat "temel" değil?
Pacerier

1
"... yeni tarih ve saat api (JSR-310) ..." - Oracle / Sun'daki bir kişi javax'a daha iyi konulmasına karar verdi, çünkü bu çekirdek kütüphanelerin daha yeni bir uzantısı. Eğer katılmıyorsanız, onlarla birlikte almak en iyisidir.
duffymo

Sadece başvuru için: onlar bu kararı geri verildi ve JSR-310 altına konulmuştur java.time: docs.oracle.com/javase/8/docs/api/java/time/...
Mark Rotteveel

37

Javax ad alanı , şu anda isteğe bağlı paketler olarak bilinen standart uzantılar için genellikle (yüklü bir kelimedir) kullanılır . Standart uzantılar, çekirdek olmayan API'lerin bir alt kümesidir; çekirdek olmayan API'lerin diğer segmenti, standart olmayan uzantılar olarak adlandırıldı ve com.sun. * veya com.ibm gibi ad alanlarını işgal etti. . Çekirdek API'ler java'yı kaplıyor. ad.

Java API dünyasındaki her şey çekirdek olarak başlamıyor, bu nedenle uzantılar genellikle JSR isteklerinden doğuyor. Sonunda 'bilge öğütler' temelinde çekirdek olmaya teşvik edilirler.

Bu terminolojiye duyulan ilgi, Sun'ın parçasındaki sahte bir pastan geldi - uzantılar çekirdeğe yükseltilebilirdi, yani javax. * 'Dan java. *' A geri uyumluluk vaadini kırarak. Programcılar kısık sesle ağladı ve daha iyi bir his kazandı. Bu nedenle, Swing API'sı çekirdeğin bir parçası olmasına rağmen javax. * Ad alanında kalmaya devam ediyor. Ayrıca, paketler uzantılardan çekirdeğe nasıl yükseltilir - JDK ve JRE'nin bir parçası olarak kolayca indirilebilir.


2

Javax eskiden sadece uzantılar içindi. Yine de güneş, java kaldırımını x'i kaldırmayı unutarak ekledi. Geliştiriciler javax ile kod yapmaya başladı. Ancak daha sonra güneşler onu java olarak değiştirmeye karar verdi. Geliştiriciler fikri beğenmediler çünkü kodları mahvolurlar ... bu yüzden javax tutuldu.


1

java. * paketleri temel Java dil paketleridir, yani Java dilini kullanan programcıların java dilini değerli bir şekilde kullanmak için bunları kullanmaları gerekir.

javax. * paketleri, özel API'leri Java platformunda çalışan tüm uygulamalar için kullanılabilir hale getirmek için standart, ölçeklenebilir bir yol sağlayan isteğe bağlı paketlerdir.


0

Gibi bazı paketler javax.swingilk başta java standart kütüphanesine dahil edilmedi. Sun şirketi onları resmi olarak kabul etmeye karar verdi ve bunları standart kütüphaneler veya standart uzantılar olarak java'nın ilk sürümlerine dahil etti.

Kural olarak, tüm standart uzantılar bir Xsüre ile başlar ve ne olduğu gibi zamanla birinci sınıfa yükselebilirler javax.swing.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.