Java es un lenguaje de
programación orientado a objetosdesarrollado
por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de
su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina
herramientas de bajo nivel, que suelen inducir a muchos errores, como la
manipulación directa de punteros o memoria.
Las aplicaciones Java están típicamente compiladas en
un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución,
el bytecode es normalmente interpretadoo
compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador
Java también es
posible.
Características de JAVA:
A lo largo de este apartado se estudian en detalle las
principales características de Java:
· Orientación
a objetos, En este aspecto Java fue diseñado partiendo de cero, no
siendo derivado de otro lenguaje anterior y no tiene compatibilidad con ninguno
de ellos. En Java el concepto de objeto resulta sencillo y fácil de ampliar.
Además se conservan elementos "no objetos", como números, caracteres
y otros tipos de datos simples.
· Riqueza
semántica, Pese a su simpleza se ha conseguido un considerable
potencial, y aunque cada tarea se puede realizar de un número reducido de
formas, se ha conseguido un gran potencial de expresión e innovación desde el
punto de vista del programador.
· Robusto, Java verifica su código al mismo tiempo que lo escribe, y una
vez más antes de ejecutarse, de manera que se consigue un alto margen de
codificación sin errores. Se realiza un descubrimiento de la mayor parte de los
errores durante el tiempo de compilación, ya que Java es estricto en cuanto a
tipos y declaraciones, y así lo que es rigidez y falta de flexibilidad se
convierte en eficacia. Respecto a la gestión de memoria, Java libera al
programador del compromiso de tener que controlar especialmente la asignación
que de ésta hace a sus necesidades específicas. Este lenguaje posee una gestión
avanzada de memoria llamada gestión de basura, y un manejo de excepciones
orientado a objetos integrados. Estos elementos realizarán muchas tareas antes
tediosas a la vez que obligadas para el programador.
· Modelo
de objeto rico, Existen varias clases que contienen las abstracciones básicas
para facilitar a los programas una gran capacidad de representación. Para ello
se contará con un conjunto de clases comunes que pueden crecer para admitir
todas las necesidades del programador. Además
la biblioteca de clases de Java proporciona un conjunto único de protocolos de
Internet.
· Fácil
aprendizaje, El único requerimiento para aprender Java es tener una
comprensión de los conceptos básicos de la programación orientada a objetos.
Así se ha creado un lenguaje simple (aunque eficaz y expresivo) pudiendo
mostrarse cualquier planteamiento por parte del programador sin que las
interioridades del sistema subyacente sean desveladas.
· Java
es más complejo que un lenguaje simple, pero más sencillo que cualquier otro
entorno de programación. El único obstáculo que se puede presentar es conseguir
comprender la programación orientada a objetos, aspecto que, al ser
independiente del lenguaje, se presenta como insalvable.
· Completado
con utilidades, El paquete de
utilidades de Java viene con un conjunto completo de estructuras de datos
complejas y sus métodos asociados, que serán de inestimable ayuda para
implementar applets y otras aplicaciones más complejas. Se
dispone también de estructuras de datos habituales, como pilas y tablas
hash, como clases ya implementadas.
· Interactivo y animado, Uno de los requisitos de Java desde sus inicios fue la
posibilidad de crear programas en red interactivos, por lo que es capaz de
hacer varias cosas a la vez sin perder rastro de lo que debería suceder y
cuándo. Para se da soporte a la utilización de múltiples hilos de programación
(multithread).
· Arquitectura
neutral, Java está diseñado para que un programa escrito en este
lenguaje sea ejecutado correctamente independientemente de la plataforma en la
que se esté actuando (Macintosh, PC, UNIX…). Para conseguir esto utiliza una
compilación en una representación intermedia que recibe el nombre de códigos de byte, que pueden
interpretarse en cualquier sistema operativo con un intérprete de Java. La
desventaja de un sistema de este tipo es el rendimiento; sin embargo, el hecho
de que Java fuese diseñado para funcionar razonablemente bien en
microprocesadores de escasa potencia, unido a la sencillez de traducción a
código máquina hacen que Java supere esa desventaja sin problemas.
El
entorno de ejecución era relativamente seguro y los principales navegadores web
pronto incorporaron la posibilidad de ejecutar applets Java
incrustadas en las páginas web.
Java ha
experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un enorme incremento en
el número de clases y paquetes que componen la biblioteca estándar.5
Desde J2SE 1.4,
la evolución del lenguaje ha sido regulada por el JCP (Java Community
Process), que usa Java
Specification Requests (JSRs)
para proponer y especificar cambios en la plataforma Java. El lenguaje en sí
mismo está especificado en la Java
Language Specification (JLS),
o Especificación del Lenguaje Java. Los cambios en los JLS son gestionados en JSR
901.
·
una reestructuración intensiva del
modelo de eventos AWT (Abstract Windowing Toolkit)
·
clases internas (inner classes)
·
JDBC (Java Database Connectivity), para la
integración de bases de datos
·
RMI (Remote Method Invocation)
·
J2SE 1.2 (8 de diciembre de 1998)
— Nombre clave Playground.
Esta y las siguientes versiones fueron recogidas bajo la denominación Java 2 y el nombre "J2SE" (Java 2
Platform, Standard Edition), reemplazó a JDK para distinguir la plataforma base
de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro
Edition). Otras mejoras añadidas incluían: comunicado de prensa
·
la API gráfica ( Swing)
fue integrada en las clases básicas
·
la máquina virtual (JVM) de Sun fue
equipada con un compilador JIT (Just in Time) por primera vez
·
Java IDL, una implementación de IDL (Lenguaje
de Descripción de Interfaz) para la interoperabilidad con CORBA
·
Colecciones (Collections)
·
J2SE 1.3 (8 de mayo de 2000)
— Nombre clave Kestrel.
Los cambios más notables fueron:comunicado de prensa lista completa de cambios
·
la inclusión de la máquina virtual de HotSpot JVM (la JVM de HotSpot fue lanzada
inicialmente en abril de 1999, para la JVM de J2SE 1.2)
·
se incluyó el Java
Naming and Directory Interface (JNDI)
en el paquete de bibliotecas principales (anteriormente disponible como una
extensión)
·
J2SE 1.4 (6 de febrero de 2002)
— Nombre Clave Merlin.
Este fue el primer lanzamiento de la plataforma Java desarrollado bajo el
Proceso de la Comunidad Java comoJSR
59. Los cambios más notables fueron: comunicado de prensalista completa de cambios
·
Expresiones regulares modeladas al estilo de las expresiones
regulares Perl
·
Encadenación
de excepciones Permite
a una excepción encapsular la excepción de bajo nivel original.
·
Java Web Start incluido (El primer lanzamiento
ocurrió en marzo de 2001 para J2SE 1.3) (Especificado en JSR
56.)
·
J2SE 5.0 (30 de septiembre de 2004)
— Nombre clave: Tiger.
(Originalmente numerado 1.5, esta notación aún es usada internamente.[2]) Desarrollado bajo JSR
176, Tiger añadió un número significativo de nuevas características comunicado de prensa
·
Plantillas (genéricos) — provee conversión de tipos (type safety) en tiempo de compilación para
colecciones y elimina la necesidad de la mayoría de conversión de tipos
(type casting). (Especificado por JSR
14.)
·
Metadatos —
también llamados anotaciones,
permite a estructuras del lenguaje como las clases o los métodos, ser
etiquetados con datos adicionales, que puedan ser procesados posteriormente por
utilidades de proceso de metadatos. (Especificado por JSR
175.)
·
Autoboxing/unboxing
— Conversiones automáticas entre tipos primitivos (Como los
int
)
y clases de envoltura primitivas (Como Integer). (Especificado por JSR
201.)
·
Enumeraciones — la palabra reservada
enum
crea
una typesafe,
lista ordenada de valores (como Dia.LUNES
, Dia.MARTES
, etc.). Anteriormente, esto solo
podía ser llevado a cabo por constantes enteras o clases construidas
manualmente (enum pattern). (Especificado por JSR
201.)
·
Varargs (número de argumentos
variable) — El último parámetro de un método puede ser declarado con el nombre
del tipo seguido por tres puntos (e.g.
void drawtext(String... lines)
).
En la llamada al método, puede usarse cualquier número de parámetros de ese
tipo, que serán almacenados en un array para pasarlos al método.
·
Bucle
for
mejorado
— La sintaxis para el bucle for
se
ha extendido con una sintaxis especial para iterar sobre cada miembro de un
array o sobre cualquier clase que implemente Iterable, como la clase estándar Collection, de la siguiente forma:void displayWidgets (Iterable<Widget> widgets) {
for (Widget w : widgets) {
w.display();
}
}
Este
ejemplo itera sobre el objeto
Iterable
widgets
, asignando, en orden, cada uno de los elementos a la variable w
, y llamando al método display()
de cada uno de ellos. (Especificado por JSR 201.)
·
Java SE 6 (11 de diciembre de 2006)
— Nombre clave Mustang.
Estuvo en desarrollo bajo la JSR
270. En esta versión, Sun cambió el nombre "J2SE" por Java SE y eliminó el ".0" del número
de versión.[3]. Está disponible en http://java.sun.com/javase/6/. Los cambios más
importantes introducidos en esta versión son:
·
Incluye un nuevo marco de trabajo y
APIs que hacen posible la combinación de Java con lenguajes dinámicos como PHP,
Python, Ruby y JavaScript.
·
Incluye el motor Rhino, de Mozilla,
una implementación de Javascript en Java.
·
Incluye un cliente completo de
Servicios Web y soporta las últimas especificaciones para Servicios Web, como
JAX-WS 2.0, JAXB 2.0, STAX y JAXP.
·
Mejoras en la interfaz gráfica y en
el rendimiento.
·
Java SE 7 —
Nombre clave Dolphin. En
el año 2006 aún se encontraba en las primeras
etapas de planificación. Su lanzamiento fue en julio de 2011.
·
Soporte para XML dentro del propio
lenguaje.
·
Un nuevo concepto de superpaquete.
·
Soporte para closures.
·
Introducción de anotaciones estándar
para detectar fallos en el software.
·
No oficiales:
·
NIO2.
·
Java Module System.
·
Java Kernel.
·
Nueva API para el manejo de Días y
Fechas, la cual reemplazara las antiguas clases Date y Calendar.
·
Posibilidad de operar con clases
BigDecimal usando operandos.
·
Java SE 8 —
lanzada en marzo de 2014. Cabe destacar:
·
Incorpora de forma completa la
librería JavaFX.
·
Diferentes mejoras en seguridad.
·
Diferentes mejoras en concurrencia.
·
Añade funcionalidad para programación
funcional mediante expresiones Lambda.
·
Mejora la integración de JavaScript.
·
Nuevas API para manejo de fechas y
tiempo (date - time).
No hay comentarios. :
Publicar un comentario