Platforma Java, wersja standardowa - Java Platform, Standard Edition

Java Platform, Standard Edition ( Java SE ) to platforma obliczeniowa do tworzenia i wdrażania przenośnego kodu dla środowisk desktopowych i serwerowych . Java SE była wcześniej znana jako Java 2 Platform, Standard Edition ( J2SE ).

Platforma wykorzystuje język programowania Java i jest częścią rodziny platform oprogramowania Java . Java SE definiuje szereg interfejsów API ogólnego przeznaczenia - takich jak interfejsy API języka Java dla biblioteki klas języka Java - a także zawiera specyfikację języka Java i specyfikację maszyny wirtualnej języka Java . OpenJDK to oficjalna implementacja referencyjna od wersji 7.

Nazewnictwo, normy i specyfikacje

Platforma była znana jako Java 2 Platform, Standard Edition lub J2SE od wersji 1.2, aż do zmiany nazwy na Java Platform, Standard Edition lub Java SE w wersji 1.5. Litera „SE” służy do odróżnienia platformy podstawowej od platform Enterprise Edition ( Java EE ) i Micro Edition ( Java ME ). „2” pierwotnie miało na celu podkreślenie głównych zmian wprowadzonych w wersji 1.2, ale zostało usunięte w wersji 1.6. Konwencja nazewnictwa została kilkakrotnie zmieniona w historii wersji Java . Począwszy od J2SE 1.4 (Merlin), Java SE została opracowana w ramach Java Community Process , która tworzy opisy proponowanych i ostatecznych specyfikacji platformy Java o nazwie Java Specification Requests (JSR) . JSR 59 była specyfikacją zbiorczą dla J2SE 1.4, a JSR 176 określona J2SE 5.0 (Tiger). Java SE 6 (Mustang) została wydana pod JSR 270.

Java Platform, Enterprise Edition (Java EE) to powiązana specyfikacja, która obejmuje wszystkie klasy w języku Java SE, a także liczbę, która jest bardziej przydatna w programach uruchamianych na serwerach niż na stacjach roboczych .

Java Platform, Micro Edition (Java ME) to powiązana specyfikacja mająca na celu zapewnienie certyfikowanej kolekcji interfejsów API języka Java do tworzenia oprogramowania dla małych urządzeń o ograniczonych zasobach, takich jak telefony komórkowe , palmtopy i dekodery .

Java Runtime Environment (JRE) i Java Development Kit (JDK) są rzeczywiste pliki pobierane i instalowane na komputerze, aby uruchomić lub opracowania programów Java, odpowiednio.

Pakiety ogólnego przeznaczenia

java.lang

Pakiet Java java.lang zawiera podstawowe klasy i interfejsy ściśle związane z językiem i wykonawczym systemu. Obejmuje to klasy główne, które tworzą hierarchię klas , typy powiązane z definicją języka, podstawowe wyjątki , funkcje matematyczne, wątki , funkcje bezpieczeństwa, a także niektóre informacje o bazowym systemie natywnym. Ten pakiet zawiera 22 z 32 Error klas dostępnych w JDK 6.

Główne klasy i interfejsy w programie java.lang to:

Klasy w programie java.lang są automatycznie importowane do każdego pliku źródłowego .

java.lang.ref

java.lang.ref Pakiet zapewnia bardziej elastyczne rodzaje odniesień niż są dostępne w inny sposób, co pozwala na ograniczoną interakcję między aplikacją a wirtualna maszyna Javy (JVM) śmieciarza . Jest to ważny pakiet, na tyle centralny dla języka, aby projektanci języka mogli nadać mu nazwę zaczynającą się od „java.lang”, ale jest on w pewnym sensie przeznaczony do specjalnych celów i nie jest używany przez wielu programistów. Ten pakiet został dodany w J2SE 1.2.

Java ma wyrazisty system odniesień i pozwala na specjalne zachowanie przy usuwaniu elementów bezużytecznych. Normalne odwołanie w Javie jest nazywane „silnym odniesieniem”. java.lang.ref Pakiet określa trzy rodzaje innych odniesień miękki, słaby i odniesienia przerywanymi. Każdy typ odniesienia jest przeznaczony do określonego użytku.

  • SoftReference Mogą być wykorzystane do realizacji pamięci podręcznej . Obiekt, który nie jest osiągalny przez silne odniesienie (to znaczy nie jest silnie osiągalny), ale do którego odnosi się miękkie odniesienie, nazywa się „miękko osiągalnym”. Cicho osiągalny obiekt może być zbierany jako śmieci według uznania garbage collectora. Zwykle oznacza to, że cicho osiągalne obiekty są zbierane jako elementy bezużyteczne tylko wtedy, gdy ilość wolnej pamięci jest niska - ale znowu jest to w gestii modułu odśmiecającego. Z semantycznego punktu widzenia miękkie odniesienie oznacza: „Zachowaj ten obiekt, gdy nic innego nie odwołuje się do niego, chyba że pamięć jest potrzebna”.
  • A WeakReference służy do implementacji słabych map. Obiekt, który nie jest silnie lub miękko osiągalny, ale do którego odnosi się słabe odniesienie, nazywany jest „ słabo osiągalnym ”. Słabo osiągalny obiekt jest zbierany jako śmieci w następnym cyklu zbierania. To zachowanie jest używane w klasie java.util.WeakHashMap . Słaba mapa pozwala programiście umieszczać pary klucz / wartość na mapie i nie martwić się o obiekty zajmujące pamięć, gdy klucz nie jest już dostępny nigdzie indziej. Innym możliwym zastosowaniem słabych odwołań jest pula stażystów ciągów . Z semantycznego punktu widzenia słabe odwołanie oznacza „pozbycie się tego obiektu, gdy nic innego nie odwołuje się do niego podczas następnego czyszczenia pamięci”.
  • A PhantomReference służy do odwoływania się do obiektów, które zostały oznaczone do wyrzucania elementów bezużytecznych i zostały sfinalizowane , ale nie zostały jeszcze odzyskane. Obiekt, który nie jest silnie, miękko lub słabo osiągalny, ale do którego odnosi się odniesienie do fantomu, nazywany jest „osiągalnym fantomem”. Pozwala to na bardziej elastyczne czyszczenie niż jest to możliwe w przypadku samego mechanizmu finalizacji. Z semantycznego punktu widzenia odniesienie do fantomu oznacza, że ​​„ten obiekt nie jest już potrzebny i został ukończony w ramach przygotowań do zebrania”.

Każdy z tych typów odwołań rozszerza Reference klasę, która zapewnia get() metodę zwracania silnego odwołania do obiektu referencyjnego (lub null jeśli odwołanie zostało wyczyszczone lub jeśli typ odwołania to fantom) oraz clear() metodę czyszczenia odwołania.

java.lang.ref Definiuje również klasy ReferenceQueue , które mogą być używane w każdej aplikacji omówionych powyżej śledzenie obiektów, które zmieniły rodzaj odniesienia. Po Reference utworzeniu jest opcjonalnie rejestrowany w kolejce referencyjnej. Aplikacja odpytuje kolejkę referencyjną w celu pobrania referencji, które zmieniły stan osiągalności.

java.lang.reflect

Odbicie to składnik Java API, który umożliwia kodowi Java badanie i „odzwierciedlanie” komponentów Java w czasie wykonywania oraz używanie odzwierciedlonych elementów członkowskich. Klas w java.lang.reflect pakiecie wraz z java.lang.Class i java.lang.Package aplikacje, takie jak debugery , tłumaczy , inspektorów obiektów, przeglądarek klasy i usług, takich jak obiekt serializacji i JavaBeans , które potrzebują dostępu albo do publicznych członków obiektu docelowego (na podstawie swojej klasie wykonawczego) lub członkowie zadeklarowani przez daną klasę. Ten pakiet został dodany w JDK 1.1.

Odbicie służy do tworzenia instancji klas i wywoływania metod przy użyciu ich nazw, co pozwala na programowanie dynamiczne. Klasy, interfejsy, metody, pola i konstruktory można wykrywać i używać w czasie wykonywania. Refleksja jest wspierana przez metadane dotyczące programu, które JVM posiada.

Techniki

Istnieją podstawowe techniki związane z refleksją:

  • Odkrycie - polega na pobraniu obiektu lub klasy i odkryciu członków, nadklas, zaimplementowanych interfejsów, a następnie ewentualnie przy użyciu odkrytych elementów.
  • Użyj według nazwy - polega na rozpoczęciu od symbolicznej nazwy elementu i użyciu nazwanego elementu.
Odkrycie

Odnajdowanie zwykle rozpoczyna się od obiektu i wywołania Object.getClass() metody w celu uzyskania kodu obiektu Class . Class Obiekt ma kilka metod odkrywania zawartość tej klasy, na przykład:

  • getMethods() - zwraca tablicę Method obiektów reprezentujących wszystkie metody publiczne klasy lub interfejsu
  • getConstructors() - zwraca tablicę Constructor obiektów reprezentujących wszystkie publiczne konstruktory klasy
  • getFields() - zwraca tablicę Field obiektów reprezentujących wszystkie publiczne pola klasy lub interfejsu
  • getClasses() - zwraca tablicę Class obiektów reprezentujących wszystkie publiczne klasy i interfejsy, które są członkami (np. Klasy wewnętrzne ) klasy lub interfejsu
  • getSuperclass() - zwraca Class obiekt reprezentujący nadklasę klasy lub interfejsu ( null jest zwracany dla interfejsów)
  • getInterfaces() - zwraca tablicę Class obiektów reprezentujących wszystkie interfejsy implementowane przez klasę lub interfejs
Użyj według nazwy

Class Można otrzymać albo przez odkrycie, za pomocą dosłownym klasy (na przykład MyClass.class ), albo za pomocą nazwy klasy (na przykład Class.forName("mypackage.MyClass") ). Z Class obiektu, członek Method , Constructor albo Field obiekty mogą być uzyskane za pomocą symboliczną nazwę członka. Na przykład:

  • getMethod("methodName", Class...) - zwraca Method obiekt reprezentujący metodę publiczną o nazwie „nazwaMetody” klasy lub interfejsu, który akceptuje parametry określone przez Class... parametry.
  • getConstructor(Class...) - zwraca Constructor obiekt reprezentujący publiczny konstruktor klasy, która akceptuje parametry określone przez Class... parametry.
  • getField("fieldName") - zwraca Field obiekt reprezentujący pole publiczne o nazwie „fieldName” klasy lub interfejsu.

Method , Constructor i Field obiekty mogą służyć do dynamicznego uzyskiwania dostępu do reprezentowanego elementu członkowskiego klasy. Na przykład:

  • Field.get(Object) - zwraca pole Object zawierające wartość pola z instancji przekazanego obiektu get() . (Jeśli Field obiekt reprezentuje pole statyczne, Object parametr jest ignorowany i może być null ).
  • Method.invoke(Object, Object...) - zwraca wartość Object zawierającą wynik wywołania metody dla wystąpienia pierwszego Object przekazanego parametru invoke() . Pozostałe Object... parametry są przekazywane do metody. (Jeśli Method obiekt reprezentuje metodę statyczną, pierwszy Object parametr jest ignorowany i może być null ).
  • Constructor.newInstance(Object...) - zwraca nową Object instancję z wywołania konstruktora. Te Object... parametry są przekazywane do konstruktora. (Zwróć uwagę, że konstruktor bez parametrów dla klasy można również wywołać przez wywołanie newInstance() ).
Tablice i proxy

java.lang.reflect Pakiet zawiera również Array klasę, która zawiera statyczne metody tworzenia i manipulowania obiektami tablicy i od J2SE 1.3, Proxy klasa dynamiczna utworzenie podpory klas proxy, które wykonują określone interfejsów.

Implementację Proxy klasy zapewnia dostarczony obiekt, który implementuje InvocationHandler interfejs. InvocationHandler Jest invoke(Object, Method, Object[]) metoda nazywa się dla każdej metody powołać na proxy się obiektu pierwszego parametru obiektu proxy, drugi parametr jest Method obiekt reprezentujący sposób z interfejsem realizowane przez serwer proxy, trzeci parametr jest tablicą parametrów przekazywane do metody interfejsu. invoke() Metoda zwraca Object wynik, który zawiera wynik zwracany do kodu, który wywołał proxy metody interfejsu.

java.io

java.io Pakiet zawiera klasy, które obsługują wejścia i wyjścia . Klasy w pakiecie są głównie zorientowane strumieniowo ; jednak zapewniona jest również klasa dla plików o dostępie swobodnym . Klasy centralne w pakiecie to i , które są abstrakcyjnymi klasami bazowymi do odczytywania i zapisywania strumieni bajtów , odpowiednio. Powiązane klasy i są abstrakcyjnymi klasami bazowymi, odpowiednio do odczytu i zapisu w strumieniach znaków . Pakiet zawiera również kilka różnych klas do obsługi interakcji z systemem plików hosta . InputStreamOutputStreamReaderWriter

Strumienie

Klasy strumienia są zgodne ze wzorcem dekoratora , rozszerzając podklasę podstawową w celu dodania funkcji do klas strumienia. Podklasy klas strumienia podstawowego są zwykle nazywane jednym z następujących atrybutów:

  • źródło / miejsce docelowe danych strumieniowych
  • typ danych zapisywanych / odczytywanych ze strumienia
  • dodatkowe przetwarzanie lub filtrowanie wykonywane na danych strumienia

Podklasy stream są nazwane stosując nazewnictwo wzór XxxStreamType gdzie Xxx to nazwa opisująca funkcję i StreamType jest jednym z InputStream , OutputStream , Reader , lub Writer .

Poniższa tabela przedstawia źródła / miejsca docelowe obsługiwane bezpośrednio przez java.io pakiet:

Źródło / miejsce docelowe Nazwa Typy strumieni Wejście / wyjście Zajęcia
byte tablica ( byte[] ) ByteArray byte w, na zewnątrz ByteArrayInputStream , ByteArrayOutputStream
char tablica ( char[] ) CharArray char w, na zewnątrz CharArrayReader , CharArrayWriter
plik File byte , char w, na zewnątrz FileInputStream , FileOutputStream , FileReader , FileWriter
string ( StringBuffer ) String char w, na zewnątrz StringReader , StringWriter
wątek ( Thread ) Piped byte , char w, na zewnątrz PipedInputStream , PipedOutputStream , PipedReader , PipedWriter

Inne pakiety bibliotek standardowych zapewniają implementacje strumieniowe dla innych miejsc docelowych, takich jak InputStream zwracane przez java.net.Socket.getInputStream() metodę lub javax.servlet.ServletOutputStream klasę Java EE .

Obsługa typów danych i przetwarzanie lub filtrowanie danych strumieniowych odbywa się za pomocą filtrów strumieniowych . Wszystkie klasy filtrów akceptują inny zgodny obiekt stream jako parametr konstruktora i dekorują zamknięty strumień dodatkowymi funkcjami. Filtry są utworzone przez przedłużenia jednej z klas filtrów podstawy FilterInputStream , FilterOutputStream , FilterReader , i FilterWriter .

Reader I Writer zajęcia są naprawdę tylko strumienie bajtowe z dodatkowym przetwarzanie przeprowadzane na strumieniu danych do konwersji bajtów na znaki. Używają domyślnego kodowania znaków dla platformy, które od J2SE 5.0 jest reprezentowane przez Charset zwracaną przez java.nio.charset.Charset.defaultCharset() metodę statyczną. InputStreamReader Klasa konwertuje InputStream do Reader a OutputStreamWriter klasa konwertuje OutputStream do Writer . Obie te klasy mają konstruktory, które obsługują określanie kodowania znaków do użycia. Jeśli nie określono kodowania, program używa domyślnego kodowania dla platformy.

W poniższej tabeli przedstawiono inne procesy i filtry java.io obsługiwane bezpośrednio przez pakiet. Wszystkie te klasy rozszerzają odpowiednią Filter klasę.

Operacja Nazwa Typy strumieni Wejście / wyjście Zajęcia
buforowanie Buffered byte , char w, na zewnątrz BufferedInputStream , BufferedOutputStream , BufferedReader , BufferedWriter
„odepchnij” ostatnią odczytaną wartość Pushback byte , char w PushbackInputStream , PushbackReader
odczyt / zapis typów pierwotnych Data byte w, na zewnątrz DataInputStream , DataOutputStream
serializacja obiektów (obiekty do odczytu / zapisu) Object bajt w, na zewnątrz ObjectInputStream , ObjectOutputStream

Losowy dostęp

Te RandomAccessFile podpory klasy losowego dostępu odczytu i zapisu plików. Klasa używa wskaźnika pliku, który reprezentuje przesunięcie bajtów w pliku dla następnej operacji odczytu lub zapisu. Wskaźnik pliku jest przenoszony niejawnie przez odczyt lub zapis i jawnie przez wywołanie metod seek(long) lub skipBytes(int) . Metoda zwraca bieżącą pozycję wskaźnika pliku getFilePointer() .

System plików

File Klasa reprezentuje plików lub katalogów ścieżkę w systemie plików . File obiekty obsługują tworzenie, usuwanie i zmianę nazw plików i katalogów oraz manipulowanie atrybutami plików, takimi jak tylko do odczytu i datownik ostatniej modyfikacji . File obiekty reprezentujące katalogi mogą służyć do uzyskania listy wszystkich zawartych plików i katalogów.

FileDescriptor Klasa jest deskryptor pliku , który reprezentuje źródło lub zlewu (docelowy) bajtów. Zwykle jest to plik, ale może to być również konsola lub gniazdo sieciowe . FileDescriptor obiekty służą do tworzenia File strumieni. Są uzyskiwane ze File strumieni i java.net gniazd oraz gniazd datagramowych.

java.nio

W J2SE 1.4 pakiet java.nio (NIO lub nieblokujące we / wy) został dodany w celu obsługi operacji we / wy mapowanych w pamięci , ułatwiając operacje we / wy bliżej podstawowego sprzętu z czasami znacznie lepszą wydajnością. java.nio Opakowanie zapewnia obsługę dla pewnej liczby typów buforów. Podpakiet java.nio.charset zapewnia obsługę różnych kodowań znaków dla danych znakowych. Podpakiet java.nio.channels zapewnia obsługę kanałów, które reprezentują połączenia z jednostkami zdolnymi do wykonywania operacji we / wy, takimi jak pliki i gniazda. java.nio.channels Pakiet zapewnia również wsparcie dla drobnoziarnistą blokowania plików.

java.math

Te java.math podpory pakietów multiprecision arytmetyka (w tym modułowych operacji arytmetycznych) i zapewnia multiprecision prime generatora liczb używanych do generowania kluczy kryptograficznych. Główne klasy pakietu to:

  • BigDecimal - zapewnia liczby dziesiętne ze znakiem o dowolnej precyzji. BigDecimal daje użytkownikowi kontrolę nad zachowaniem zaokrąglania RoundingMode .
  • BigInteger - zapewnia liczby całkowite o dowolnej precyzji. Operacje na BigInteger nie powodują przepełnienia ani utraty precyzji. Oprócz standardowych operacji arytmetycznych, zapewnia modułowy arytmetyki , GCD obliczenia, testy pierwszości , liczba pierwsza generacja, bit manipulacji, i rozmaite inne operacje.
  • MathContext - hermetyzować ustawienia kontekstu, które opisują pewne reguły dla operatorów numerycznych.
  • RoundingMode - wyliczenie, które zapewnia osiem zachowań zaokrągleń.

java.net

java.net Pakiet zawiera specjalne procedury IO do sieci, umożliwiając HTTP żądania, a także inne typowe transakcje.

java.text

Te java.text narzędzia analizowania pakietów procedur na smyczki i podpór różnych językach czytelnych dla człowieka i dla ustawień narodowych parsowania.

java.util

java.util Pakiet koncentruje się na strukturach danych, które agregują obiekty . W pakiecie znajduje się Collection API , zorganizowana hierarchia struktury danych, na którą duży wpływ mają kwestie dotyczące wzorców projektowych .

Pakiety specjalnego przeznaczenia

java.applet

Stworzony do obsługi tworzenia apletów Java , java.applet pakiet umożliwia pobieranie aplikacji przez sieć i uruchamianie w chronionej piaskownicy. Ograniczenia bezpieczeństwa można łatwo nałożyć na piaskownicę. Na przykład programista może zastosować podpis cyfrowy do apletu, oznaczając go tym samym jako bezpieczny. Dzięki temu użytkownik może nadać apletowi uprawnienia do wykonywania ograniczonych operacji (takich jak dostęp do lokalnego dysku twardego) i usuwa niektóre lub wszystkie ograniczenia piaskownicy. Certyfikaty cyfrowe są wydawane przez urzędy certyfikacji .

java.beans

W java.beans pakiecie znajdują się różne klasy do tworzenia i manipulowania komponentami beanowymi, komponentami wielokrotnego użytku zdefiniowanymi przez architekturę JavaBeans . Architektura zapewnia mechanizmy manipulowania właściwościami komponentów i wyzwalania zdarzeń, gdy te właściwości się zmieniają.

Interfejsy API w programie java.beans są przeznaczone do użytku przez narzędzie do edycji fasoli, w którym można łączyć, dostosowywać i manipulować komponentami bean. Jednym z typów edytorów fasoli jest projektant GUI w zintegrowanym środowisku programistycznym .

java.awt

java.awt Lub Abstract Window Toolkit, zapewnia dostęp do podstawowego zestawu GUI widżety na podstawie widget zestawu bazowego lokalnej platformy za rdzeń podsystemu zdarzeń GUI, a interfejs pomiędzy rodzimym systemie okienkowym i aplikacji Java. Zapewnia również kilka podstawowych menedżerów układu , pakiet transferu danych do użytku ze schowkiem i przeciąganiem i upuszczaniem , interfejs do urządzeń wejściowych, takich jak myszy i klawiatury , a także dostęp do zasobnika systemowego w systemach pomocniczych. Ten pakiet, wraz z javax.swing największą liczbą wyliczeń (łącznie 7) w JDK 6.

java.rmi

java.rmi Pakiet zawiera Java zdalnego wywołania metody do obsługi zdalnych wywołań procedur między dwiema aplikacjami Java działające w różnych JVMs .

java.security

Wsparcie dla bezpieczeństwa, w tym algorytm skrótu wiadomości, jest zawarte w java.security pakiecie.

java.sql

Implementacja interfejsu API JDBC (używanego do uzyskiwania dostępu do baz danych SQL ) jest zgrupowana w java.sql pakiecie.

javax.rmi

javax.rmi Pakiet zawiera wsparcie dla zdalnej komunikacji pomiędzy aplikacjami, używając RMI nad IIOP protokół. Protokół ten łączy w sobie cechy RMI i CORBA.

Java SE Core Technologies - CORBA / RMI-IIOP

javax.swing

Swing to zbiór procedur, na podstawie których java.awt można udostępnić zestaw narzędzi widgetów niezależnych od platformy . javax.swing wykorzystuje procedury rysowania 2D do renderowania komponentów interfejsu użytkownika zamiast polegać na podstawowej obsłudze natywnego interfejsu GUI systemu operacyjnego .

Ten pakiet zawiera największą liczbę klas (w sumie 133) w JDK 6. Ten pakiet, wraz z java.awt największą liczbą wyliczeń (w sumie 7) w JDK 6. Obsługuje wygląd i sposób działania (PLAF), dzięki czemu widżety w graficznym interfejsie użytkownika mogą imitować te z podstawowego systemu natywnego. Wzorce projektowe przenikają przez system, zwłaszcza modyfikacja wzorca model – widok – kontroler , co rozluźnia powiązanie między funkcją a wyglądem. Jedną z niespójności jest to, że (od wersji J2SE 1.3) czcionki są rysowane przez podstawowy system natywny, a nie przez Javę, co ogranicza przenośność tekstu. Istnieją obejścia, takie jak używanie czcionek bitmapowych. Ogólnie rzecz biorąc, „układy” są używane i utrzymują elementy w estetycznie spójnym interfejsie użytkownika na różnych platformach.

javax.swing.text.html.parser

javax.swing.text.html.parser Pakiet zawiera HTML parser error tolerancyjnego, który jest używany do pisania różnych przeglądarek i robotów internetowych.

javax.xml.bind.annotation

javax.xml.bind.annotation Pakiet zawiera największą liczbę typów adnotacji (30 w sumie) w JDK 6. Określa adnotacji do dostosowywania elementów Java program do mapowania schematu XML.

Pakiety OMG

org.omg.CORBA

org.omg.CORBA Pakiet zawiera wsparcie dla zdalnej komunikacji pomiędzy aplikacjami z wykorzystaniem General Inter-ORB Protocol i wspiera inne cechy wspólne obiektu żądania broker architektury . Podobnie jak RMI i RMI-IIOP , ten pakiet służy do wywoływania zdalnych metod obiektów na innych maszynach wirtualnych (zwykle przez sieć).

Ten pakiet zawiera największą liczbę Exception klas (w sumie 45) w JDK 6. Ze wszystkich możliwości komunikacyjnych CORBA jest przenoszona między różnymi językami; Jednak z tym wiąże się większa złożoność.

Te pakiety zostały wycofane w wersji Java 9 i usunięte z wersji Java 11.

org.omg.PortableInterceptor

org.omg.PortableInterceptor Pakiet zawiera największą liczbę interfejsów (39 w sumie) w JDK 6. Zapewnia mechanizm rejestracji haki ORB ORB usługi, przez które przechwytują normalnego przepływu realizacji ORB.

Bezpieczeństwo

Zgłoszono kilka krytycznych luk w zabezpieczeniach. Alerty bezpieczeństwa od Oracle ogłaszają krytyczne poprawki bezpieczeństwa dla Java SE.

Bibliografia

Linki zewnętrzne