2014-09-12 23 views
10

Java'da IO'yla çok şey yaptım ve ilkelleri bayt dizilerine dönüştürmek için kod aradıktan sonra ve geri döndüğümde, Java kaynak kodu barındırma web sitelerinden biri için java.io.Bits kaynağını buldum. Hızlı bir bakıştan sonra, paket-özel dışında ihtiyacım olan şeyin tam olarak olduğunu anladım. Bu yüzden, kamuya yaptığım bir kopyasını, projemin paketinde saklandı ve kullandım (sadece kişisel projelerde, sizi temin ederim). Bunu çok yararlı buluyorum.Neden java.io.Bits herkese açık değil?

Sorum şu, bu paket neden özel? IO ile çalışan insanlar için gerçekten yararlı olduğunu görebiliyorum ve görünürlüğünü kamuya çevirmekten dezavantaj göremiyorum (rt.jar). Ya da belki de bir eşdeğerdir (ve diğer kütüphanelerden söz etmeyiniz)? İşte

Java kaynak java.io.Bits için vardır, rastgele seçilmiş bir web sitesine bir bağlantı: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/io/Bits.java

cevap

8

Emin için Java devs birini sormalısınız ama özel paket yaparak, API tedavi edilebilir "iç" olarak - yani herhangi bir zamanda değişebilir veya kaybolabilir. Bu, API'nın nispeten hızlı bir şekilde geliştirilebileceği ve kamuya açık API'ların geçmesi gereken aynı kapsamlı kapsamlı bir test sürecinden geçmesi gerekmediği anlamına gelir (bir kez piyasaya sürüldükleri zaman, orada iyi durumda kalırlar.)

Kısacası, bir API kamuoyunun uzun vadede etkileri olması ve bir anahtara vurmaktan çok daha fazla iş gerektirmesi.

Bir tahminde, IO paketindeki birkaç başka sınıf için faydalı "hacklenmiş" bir grup işlev olarak hayata başladığını ve o zamandan beri orada kaldığını tahmin ediyorum.

+0

Sadece kişisel bir kopyasını yapmak ve bir uygulama ile dağıtmak iyi olur mu? – Nulano

+4

@Nulano - Emin değilim. Her ne kadar uygulamanızın lisansına bağlı olduğunu tahmin etsem de. modern jdk GPL inanıyorum, bu yüzden uygulamanız GPL ise, o zaman tamam olabilir. – jtahlborn

+0

Kodda neye baktığını, onun oldukça önemsiz kodunu söyleyebilirim; Bu tür metotlardan herhangi biri istendiğinde, herhangi bir yetkili programcı çok benzer (eğer aynı değilse) bir uygulama ile ortaya çıkacaktır. Uygun bir gerekçe olmasa da; Kodun telif hakkı ihlali iddialarını gerektirecek kadar orijinal olmadığına inanıyorum. – Durandal

3

Paket özeldir, elbette, ancak aynı davranışı açığa çıkaran genel API'ler vardır, örn. ByteBuffer.wrap(array).getInt(index) ve diğer yöntemler ByteBuffer. Java'dan dahili uygulama ayrıntılarını kopyalamaya veya kopyalamaya çalışmaktan ziyade, düzgün tasarlanmış, iyi belgelenmiş genel API'yi kullanmaktan neredeyse her şeyden daha iyisiniz.

+0

Bunun kabul edilmeye değer bir cevap olduğunu düşünüyorum, ancak kabul edebileceğimden "Sadece tek bir cevap, sadece +1 al. – Nulano

+0

ByteBuffer ve java.io'nun performansından emin değildim.Bitler çok hızlı bir test yaptı. Sonuçlar java.io.Bits saklamak için hemen sonra mutlak BB ile en hızlı olduğunu ve mutlak BB okumak için göreceli büyük endian ile en hızlı ve daha sonra küçük bitian, Bits en yavaş olduğunu göstermektedir. İşte benim test için ayrıntılı sonuçlar ve src kodu için bir macun link: http://pastebin.com/XStkmN8s – Nulano

+0

Güncelleme: Ubuntu makinemde test eklemek için pastebin'i güncelledim. Onlar çok java.io.Bits lehine, ama büyük endian mutlak ByteBuffer yakındır. – Nulano