Java
Java es un lenguaje de programación de
propósito general, concurrente, orientado a objetos que fue diseñado
específicamente para tener tan pocas dependencias de implementación como fuera
posible. Su intención es permitir que los desarrolladores de aplicaciones
escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido
en inglés como WORA, o "write once, run anywhere"), lo que quiere
decir que el código que es ejecutado en una plataforma no tiene que ser
recompilado para correr en otra. Java es, a partir de 2012, uno de los
lenguajes de programación más populares en uso, particularmente para
aplicaciones de cliente-servidor de web, con unos 10 millones de usuarios
reportados.
Historia
El lenguaje de programación Java fue
originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue
adquirida por la compañía Oracle) y publicado en 1995 como un componente
fundamental de la plataforma Java de Sun Microsystems. Su sintaxis deriva en
gran medida de C y C++, pero tiene menos utilidades de bajo nivel que
cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a
bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java
(JVM) sin importar la arquitectura de la computadora subyacente.
La compañía Sun desarrolló la
implementación de referencia original para los compiladores de Java, máquinas
virtuales, y librerías de clases en 1991 y las publicó por primera vez en 1995.
A partir de mayo de 2007, en cumplimiento con las especificaciones del Proceso
de la Comunidad Java, Sun volvió a licenciar la mayoría de sus tecnologías de
Java bajo la Licencia Pública General de GNU. Otros también han desarrollado
implementaciones alternas a estas tecnologías de Sun, tales como el Compilador
de Java de GNU y el GNU Classpath.
Orientado a objetos
La primera característica, orientado a
objetos (“OO”), se refiere a un método de programación y al diseño del
lenguaje. Aunque hay muchas interpretaciones para OO, una primera idea es
diseñar el software de forma que los distintos tipos de datos que usen estén
unidos a sus operaciones. Así, los datos y el código (funciones o métodos) se
combinan en entidades llamadas objetos. Un objeto puede verse como un paquete
que contiene el “comportamiento” (el código) y el “estado” (datos). El
principio es separar aquello que cambia de las cosas que permanecen
inalterables. Frecuentemente, cambiar una estructura de datos implica un cambio
en el código que opera sobre los mismos, o viceversa. Esta separación en
objetos coherentes e independientes ofrece una base más estable para el diseño
de un sistema software. El objetivo es hacer que grandes proyectos sean fáciles
de gestionar y manejar, mejorando como consecuencia su calidad y reduciendo el
número de proyectos fallidos.
El recolector de basura
En Java el problema fugas de memoria se
evita en gran medida gracias a la recolección de basura (o automatic garbage
collector). El programador determina cuándo se crean los objetos y el entorno
en tiempo de ejecución de Java (Java runtime) es el responsable de gestionar el
ciclo de vida de los objetos. El programa, u otros objetos pueden tener
localizado un objeto mediante una referencia a éste. Cuando no quedan
referencias a un objeto, el recolector de basura de Java borra el objeto, liberando
así la memoria que ocupaba previniendo posibles fugas (ejemplo: un objeto
creado y únicamente usado dentro de un método sólo tiene entidad dentro de
éste; al salir del método el objeto es eliminado). Aun así, es posible que se
produzcan fugas de memoria si el código almacena referencias a objetos que ya
no son necesarios—es decir, pueden aún ocurrir, pero en un nivel conceptual
superior. En definitiva, el recolector de basura de Java permite una fácil
creación y eliminación de objetos y mayor seguridad.
El lenguaje
En un sentido estricto, Java no es un
lenguaje absolutamente orientado a objetos, a diferencia de, por ejemplo, Ruby
o Smalltalk. Por motivos de eficiencia, Java ha relajado en cierta medida el
paradigma de orientación a objetos, y así por ejemplo, no todos los valores son
objetos.
El código Java puede ser a veces redundante
en comparación con otros lenguajes. Esto es en parte debido a las frecuentes
declaraciones de tipos y conversiones de tipo manual (casting). También se debe
a que no se dispone de operadores sobrecargados, y a una sintaxis relativamente
simple. Sin embargo, J2SE 5.0 introduce elementos para tratar de reducir la
redundancia, como una nueva construcción para los bucles ‘’’foreach’’’.
A diferencia de C++, Java no dispone de
operadores de sobrecarga definidos por el usuario. Los diseñadores de Java
tomaron esta decisión puesto que consideraban que, bajo ciertas circunstancias,
esta característica podía complicar la lectura y mantenimiento de los
programas.
SDK
Un kit de desarrollo de software o SDK
(siglas en inglés de software development kit) es generalmente un conjunto de
herramientas de desarrollo de software que le permite al programador o
desarrollador de software crear aplicaciones para un sistema concreto, por
ejemplo ciertos paquetes de software, frameworks, plataformas de hardware,
computadoras, videoconsolas, sistemas operativos, etcétera.
Es algo tan sencillo como una interfaz de
programación de aplicaciones o API (del inglés application programing
interface) creada para permitir el uso de cierto lenguaje de programación, o
puede, también, incluir hardware sofisticado para comunicarse con un
determinado sistema embebido. Las herramientas de desarrollo de software más
comunes incluyen soporte para la detección de errores de programación como un entorno
de desarrollo integrado o IDE (del inglés Integrated Development Environment) y
otras utilidades. Los SDK frecuentemente también incluyen códigos de ejemplo y
notas técnicas de soporte u otra documentación de soporte para ayudar a
clarificar ciertos puntos del material de referencia primario.
JRE
El JRE (Java Runtime Environment, o Entorno
en Tiempo de Ejecución de Java) es el software necesario para ejecutar
cualquier aplicación desarrollada para la plataforma Java. El usuario final usa
el JRE como parte de paquetes software o plugins (o conectores) en un navegador
Web. Sun ofrece también el SDK de Java 2, o JDK (Java Development Kit) en cuyo
seno reside el JRE, e incluye herramientas como el compilador de Java, Javadoc
para generar documentación o el depurador. Puede también obtenerse como un
paquete independiente, y puede considerarse como el entorno necesario para
ejecutar una aplicación Java, mientras que un desarrollador debe además contar
con otras facilidades que ofrece el JDK.
JAVA EE
Java Platform, Enterprise Edition o Java EE
(anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta
la versión 1.4; traducido informalmente como Java Empresarial), es una
plataforma de programación—parte de la Plataforma Java—para desarrollar y
ejecutar software de aplicaciones en el lenguaje de programación Java. Permite
utilizar arquitecturas de N capas distribuidas y se apoya ampliamente en
componentes de software modulares ejecutándose sobre un servidor de
aplicaciones. La plataforma Java EE está definida por una especificación.
Similar a otras especificaciones del Java Community Process, Java EE es también
considerada informalmente como un estándar debido a que los proveedores deben
cumplir ciertos requisitos de conformidad para declarar que sus productos son
conformes a Java EE; estandarizado por The Java Community Process / JCP.
Java EE tiene varias especificaciones de
API, tales como JDBC, RMI, e-mail, JMS, Servicios Web, XML, etc y define cómo
coordinarlos. Java EE también configura algunas especificaciones únicas para
Java EE para componentes. Estas incluyen Enterprise JavaBeans, servlets,
portlets (siguiendo la especificación de Portlets Java), JavaServer Pages y
varias tecnologías de servicios web. Ello permite al desarrollador crear una
Aplicación de Empresa portable entre plataformas y escalable, a la vez que
integrable con tecnologías anteriores. Otros beneficios añadidos son, por
ejemplo, que el servidor de aplicaciones puede manejar transacciones, la
seguridad, escalabilidad, concurrencia y gestión de los componentes
desplegados, significando que los desarrolladores pueden concentrarse más en la
lógica de negocio de los componentes en lugar de en tareas de mantenimiento de
bajo nivel.
JAVA ME
La plataforma Java Micro Edition (Java ME),
o anteriormente Java 2 Micro Edition (J2ME), es una especificación de un
subconjunto de la plataforma Java orientada a proveer una colección certificada
de APIs de desarrollo de software para dispositivos con recursos restringidos.
Está orientado a productos de consumo como PDAs, teléfonos móviles o
electrodomésticos.
Java ME fue una buena opción para crear
juegos en teléfonos móviles debido a que se puede emular en un PC durante la
fase de desarrollo y luego subirlos fácilmente al teléfono. Al utilizar
tecnologías Java el desarrollo de aplicaciones o videojuegos con estas APIs
resulta bastante económico de portar a otros dispositivos. Sin embargo, pocos
dispositivos actualmente utilizan la tecnología por la que poco a poco ésta se
ha ido al olvido.
Java ME fue desarrollado mediante el Java
Community Process bajo la especificación JSR 68. La evolución de la plataforma
ha propiciado el abandono de las Java Specification Request (peticiones de
especificación para Java) en favor de JSRs separadas para las distintas
versiones de Java ME.
JAVA SE
Java Platform, Standard Edition o Java SE
(conocido anteriormente hasta la versión 5.0 como Plataforma Java 2, Standard
Edition o J2SE), es una colección de APIs del lenguaje de programación Java
útiles para muchos programas de la Plataforma Java. La Plataforma Java 2,
Enterprise Edition incluye todas las clases en el Java SE, además de algunas de
las cuales son útiles para programas que se ejecutan en servidores sobre
workstations.
Comenzando con la versión J2SE 1.4 (Merlin), la
plataforma Java SE ha sido desarrollada bajo la supervisión del Java Community
Process. JSR 59 la especificación para J2SE 1.4 y JSR 176 especificó J2SE 5.0
(Tiger). En 2006, Java SE 6 (Mustang) está siendo desarrollada bajo el JSR 270.
0 comentarios:
Publicar un comentario