Java Platform, Standard Edition o Java SE (conegut anteriorment fins a la versió 5.0 com Plataforma Java 2, Standard Edition o J2SE), és una col·lecció de APIs del llenguatge de programació Java útils per a molts programes de la Plataforma Java. La Plataforma Java 2, Enterprise Edition inclou totes les classes de Java SE, afegint-ne algunes més, algunes de les quals són útils per a programes que s'executen en servidors sobre workstations.
Començant amb la versió J2SE 1.4 (Merlin), la plataforma Java SE ha set desenvolupada sota la supervisió del Java Community Process. L'especificació per a J2SE 1.4 és la JSR 59, per a J2SE 5.0 (Tiger) és la JSR 176, i per a Java SE 6 (Mustang) és la JSR 270.
Paquets de propòsit general
El paquet Java java.lang conté les classes fonamentals i interfícies fortament relacionades amb el llenguatge, així com el sistema runtime. Això inclou les classes arrel que formen la jerarquia de classes, els tipus relacionats amb la definició del llenguatge, les excepcions bàsiques, les funcions matemàtiques, els fils d'execució, les funcions de seguretat, i també alguna informació sobre el sistema natiu subjacent.
Les principals classes en java.lang són: – la classe que és l'arrel de tota la jerarquia de classes. – la classe base per a les classes enumeration (pròpies de J2SE 5.0). – la classe que és l'arrel del sistema de reflexió Java. – la classe que és l'arrel de la jerarquia de classes d'excepcions. , , i – les classes base de cada tipus d'excepció. – la classe que permet operacions amb fils. – la classe per a cadenes String i literals. i – classes per a realitzar manipulació de strings(StringBuilder com a part de J2SE 5.0). – la interfície que permet comparació genèrica i ordenament d'objectes (com a part de J2SE 1.2). – la interfície que permet iteració genèrica utilitzant el bucle for millorat (com a part J2SE 5.0). , , ,, i – classes que subministrin "operacions del sistema" que gestionen l'enllaç dinàmic de classes, creació de processos externs, investigacions de l'entorno del host tals com l'hora del dia, i reforç de polítiques de seguretat. Les classes i – subministrin funcions matemàtiques bàsiques tals com sinus, cosinus, i arrel quadrada(StrictMath forma part de J2SE 1.3). Les classes wrapper primitives encapsin tipus primitius com objectes. Les classes exception bàsiques llancen excepcions del nivell del llenguatge i altres excepcions comuns.
Les classes de java.lang són importades automàticament a cada Codi font.
El paquet és importat automàticament a cada codi font. El paquet java.lang.ref subministra tipus més flexibles de referències que altres disponibles, permetent interacció limitada entre l'aplicació i la recol·lecció de brossa de la Màquina Virtual Java (JVM). És un paquet important, bastant cèntric al llenguatge perquè els dissenyadors del llenguatge li donin un nom que comenci per "java.lang", però és de propòsit especial, i no utilitzat per molts desenvolupadors. Aquest paquet es va afegir a J2SE 1.2.
Java té un sistema de referències més expressiu que la majoria dels altres llenguatges de programació que utilitzen referències, això permet un comportament especial per a la recol·lecció de brossa. Una referència normal a Java es coneix com una referència forta. El paquet java.lang.ref defineix altres tipus de referències soft, weak, i fantasma. Cada categoría de referència és dissenyat per a un ús específic.
Una pot utilitzar-se per implementar una cache. Un objecte que no és recuperable per una referència forta (és a dir, no és fortament recuperable), però que estigui referenciat per una referència soft s'anomena recuperable softly. Un objecte recuperable softly pot ser recol·lectat com a brossa a decisió del recol·lector de brossa. Això generalment significa que els objectes recuperables softly únicament seran recol·lectats quan la memòria lliure sigui baixa, però també, és la decisió del recol·lector de brossa. Semànticament, una referència soft significa "manté aquest objecte a menys que es necessiti memòria."
Una s'utilitza per a implementar mapes weak. Un objecte que no és recuperable fortament o softly, però és referenciat per una referència weak, s'anomena "recuperable weakely". Un objecte recuperable weakly serà recol·lectat a la brossa durant el següent cicle de recol·lecció. Aquest comportament s'utilitza amb la classe WeakHashMap. Un mapa weak permet al programador ficar parells de clau/valor al mapa i no preocupar-se que els objectes prenguin memòria quan la clau ja no sigui recuperable en cap lloc més. Semànticament, una referència weak significa "aconseguir l'alliberació d'aquest objecte quan res més el referencia."
Una s'utilitza per a referenciar objectes que han set marcats per a recol·lecció de brossa i han set finalitzats, però no han set encara reclamats. Un objecte que no és recuperable fortament, softly o weakly, però és referenciat per una referència fantasma s'anomena recuperable fantasma. Això permet una neteja més flexible que la possible amb únicament el mecanisme de finalització. Semànticament, una referència fantasma significa "aquest objecte no es necessita més i ha set finalitzat amb preparació de ser recol·lectat."
Cada un d'aquests tipus de referència estenen la classe la qual subministra el mètode per a retornar una referència forta a l'objecte referenciat (o null si la referència ha set netejada o si el tipus de referència és fantasma), i el mètode per a netejar la referència.
java.lang.ref també defineix la classe , la qual pot utilitzar-se en cada aplicació per a mantindre la pista dels objectes que han canviat el tipus de referència. Quan una Reference es crea opcionalment i és enregistrada a una cua de referències. L'aplicació pregunta a la cua de referències per a obtindre les referències que han canviat l'estat d'alcançabilitat.
El paquet java.io conté classes que suporten entrada/sortida. Les classes del paquet són principalment streams; no obstant, s'inclou una classe per a fitxers d'accés aleatori. Les classes principals del paquet són i , les quals són classes abstractes base per a llegir de i escriure a streams de bytes, respectivament. Les classes relacionades i són classes abstractes base per a llegir de, i escriure a streams de caràcters, respectivament. El paquet també té algunes classes miscel·lànies per a suportar la interacció amb el Sistema de fitxers de l'ordinador.
Streams Les classes stream segueixen el patró decorador estenent la subclasse base per a afegir característiques a les classes stream. Les subclasses de les classes base stream són anomenades típicament per un dels següents atributs: L'origen/destí de les dades del stream el tipus de les dades escrits a/llegits del stream processament addicional o filtrat realitzant en les dades del stream
Les subclasses stream són anomenades utilitzant el patró naming XxxStreamType on Xxx és el nom que descriu la característica i StreamType és un de InputStream, OutputStream, Reader, o Writer.
La següent taula mostra els orígens/destins suportats directament pel paquet java.io:
{| border="2" cellpadding=3 cellspacing=0 style="border: 2px #aaa solid; border-collapse: collapse; font-size: 95%;" |- ! align=left| Origen/Destí !! Nom !! tipus de Stream !! Entrada/Sortida || Classes |- | byte array (byte[]) || ByteArray || byte || entrada, sortida | , |- | char array (char[]) || CharArray || char || entrada, sortida | , |- | file || File || byte, char || entrada, sortida | , , , |- | string (StringBuffer i StringBuilder) || String || char || entrada, sortida | , |- | thread (Thread) || Piped || byte, char || entrada, sortida | , , ,
Altres paquets de la llibreria estàndard subministren implementacions de stream per a altres destins, tals com el InputStream retornat pel mètode o la classe Java EE .
El maneig i processament de tipus de dades, o filtrat de les dades stream es realitza a través de filtres stream. Les classes filter accepten altres objectes stream compatibles amb paràmetre per al constructor i decoren el stream contingut amb característiques addicionals. Els Filtres es creen estenent una de les classes base filter , , , o .
Les classes Reader i Writer són justament streams de bytes amb processament addicional realitzat al stream de dades per a convertir els bytes a caràcters. Utilitza la codificació de caràcters per defecte de la plataforma, la qual des de J2SE 5.0 es representa pel retornat pel mètode estàtic . La classe converteix un InputStream a un Reader i la classe converteix un OutputStream a un Writer. Ambdues classes tenen constructors que permeten la codificació de caràcters que sigui especificada. Si no s'especifica cap codificació, aleshores s'utilitza la codificació per defecte per a la plataforma.
La següent taula mostra els altres processos i filtres suportats directament pel paquet java.io. Totes aquestes classes estenen la classe Filter corresponent.
{| border="2" cellpadding=3 cellspacing=0 style="border: 2px #aaa solid; border-collapse: collapse; font-size: 95%;" |- ! align=left| Operació !! Nom !! tipus de Stream !! Entrada/Sortida !! Classes |- | buffering || Buffered || byte, char || entrada/sortida | , , , |- | "push back" el últim valor llegit || Pushback || byte, char || entrada | , |- | tipus primitius lectura/escriptura || Data || byte || entrada/sortida | , |- | serialització d'objectes (lectura/escriptura d'objectes) || Object || byte || entrada/sortida | ,
Accés aleatori La classe suporta lectura i escriptura d'accés aleatori de fitxers. La classe utilitza un punter a fitxer que representa un byte-offset (desplaçament) dins del fitxer per a la següent operació de lectura o escriptura. El punter a fitxer es mou implícitament llegint o escrivint, i explícitament cridant als mètodes o . La posició actual del punter de fitxer es retorna amb el mètode .
Sistema de Fitxers La classe representa una ruta de fitxer o directori en un Sistema de fitxers. Els objectes File suporten la creació, eliminació i canvi de nom de fitxers i directoris, i la manipulació d'atributs de fitxers tals com solament lectura i temps de l'última vegada modificat. Els objectes File que representen directoris poden utilitzar-se per a obtindre una llista de tots els fitxers i directoris continguts.
La classe és un descriptor de fitxers que representa un origen o destí de bytes. Normalment això és un fitxer, però pot també ser una consola o un socket de xarxa. Els objectes FileDescriptor s'utilitzen per a crear streams de File. S'obtenen des de streams File i sockets java.net i sockets de datagrama.
A J2SE 1.4, el paquet java.nio (NIO o Nova E/S) va ser afegit per a suportar E/S mapejada a memòria, facilitant les operacions de E/S properes al maquinari subjacent amb millor rendiment. El paquet java.nio proporciona suport per a diversos tipus de buffer. El subpaquet proporciona suport per a diferents codificacions de caràcters per a dades de tipus caràcter. El subpaquet proporciona suport per a canals, els quals representen connexions a entitats que són capaces de realitzar operacions de E/S, tals com fitxers i sockets. El paquet java.nio.channels també proporciona suport per a bloqueig de granulació fina de fitxers.
El paquet java.math suporta aritmètica amb multiprecisió (inclou operacions aritmètiques modulars) i proporciona generadors de nombres primers amb multiprecisió utilitzats per a la generació de claus criptogràfiques. Les classes principals d'aquest paquet són:
– proporciona nombres decimals amb signe de precisió arbitrària. BigDecimal dona a l'usuari el control sobre el comportament de redondeig a través de RoundingMode.