¿Qué es Java? Historia, Tipos, Ventajas y Desventajas




¿Qué es Java?

Java es un lenguaje de programación con el que podemos realizar cualquier tipo de programa. En la actualidad es un lenguaje muy extendido y cada vez cobra más importancia tanto en el ámbito de Internet como en la informática en general. Está desarrollado por la compañía Sun Microsystems con gran dedicación y siempre enfocado a cubrir las necesidades tecnológicas más punteras.
Una de las principales características por las que Java se ha hecho muy famoso es que es un lenguaje independiente de la plataforma. Eso quiere decir que si hacemos un programa en Java podrá funcionar en cualquier ordenador del mercado. Es una ventaja significativa para los desarrolladores de software, pues antes tenían que hacer un programa para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc. Esto lo consigue porque se ha creado una Máquina de Java para cada sistema que hace de puente entre el sistema operativo y el programa de Java y posibilita que este último se entienda perfectamente.
La independencia de plataforma es una de las razones por las que Java es interesante para Internet, ya que muchas personas deben tener acceso con ordenadores distintos. Pero no se queda ahí, Java está desarrollándose incluso para distintos tipos de dispositivos además del ordenador como móviles, agendas y en general para cualquier cosa que se le ocurra a la industria.




Historia:

Java se creó como una herramienta de programación para ser usada en un proyecto de set-top-box en una pequeña operación denominada the Green Project en Sun Microsystems en el año 1991. El equipo (Green Team), compuesto por trece personas y dirigido por James Gosling, trabajó durante 18 meses en Sand Hill Road, en Menlo Park, en su desarrollo.

El lenguaje se denominó inicialmente Oak (por un roble que había fuera de la oficina de Gosling), luego pasó a denominarse Green tras descubrir que Oak era ya una marca comercial registrada para adaptadores de tarjetas gráficas, y finalmente se renombró como Java.
Es frecuentada por algunos de los miembros del equipo. Pero no está claro si es un acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las iniciales de sus diseñadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan por el siguiente acrónimo, Just Another Vague Acronym ("sólo otro acrónimo ambiguo más"). La hipótesis que más fuerza tiene es la de que Java debe su nombre a un tipo de café disponible en la cafetería cercana; de ahí que el icono de Java sea una taza de café caliente. Un pequeño signo que da fuerza a esta teoría es que los cuatro primeros bytes (el número mágico) de los archivos.class que genera el compilador, son en hexadecimal, 0xCAFEBABE. A pesar de todas estas teorías, el nombre fue sacado al parecer de una lista aleatoria de palabras.

Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratoniana de tres días entre John Gaga, James Gosling, Patrick Naughton, Wayne Rosing y Eric Schmidt, el equipo reorientó la plataforma hacia la Web. Sintieron que la llegada del navegador web Mosaic propiciaría que Internet se convirtiese en un medio interactivo, como el que pensaban era la televisión por cable. Naughton creó entonces un prototipo de navegador, WebRunner, que más tarde sería conocido como HotJava.

En 1994, se les hizo una demostración de HotJava y la plataforma Java a los ejecutivos de Sun. Java 1.0a pudo descargarse por primera vez en 1994, pero hubo que esperar al 23 de mayo de 1995, durante las conferencias de SunWorld, a que vieran la luz pública Java y HotJava, el navegador Web. El acontecimiento fue anunciado por John Gage, el director científico de Sun Microsystems. El acto estuvo acompañado por una pequeña sorpresa adicional, el anuncio por parte de Marc Andreessen, vicepresidente ejecutivo de Netscape, de que Java sería soportado en sus navegadores. El 9 de enero del año siguiente, 1996, Sun fundó el grupo empresarial JavaSoft para que se encargase del desarrollo tecnológico.

Dos semanas más tarde la primera versión de Java fue publicada.

La promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo una vez, ejecútalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma y un entorno de ejecución (la JVM) ligero y gratuito para las plataformas más populares, de forma que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.

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.




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.

· JDK 1.0 (23 de enero de 1996) — Primer lanzamiento: comunicado de prensa
· JDK 1.1 (19 de febrero de 1997) — Principales adiciones incluidas: comunicado de prensa
· una reestructuración intensiva del modelo de eventos AWT (Abstract Windowing Toolkit)
· clases internas (inner classes)
· JavaBeans
· 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 palabra reservada (keyword) strictfp

· reflexión en la programación

· 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 Plug-in

· 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)

· RMI fue cambiado para que se basara en CORBA

· JavaSound

· se incluyó el Java Naming and Directory Interface (JNDI) en el paquete de bibliotecas principales (anteriormente disponible como una extensión)

· Java Platform Debugger Architecture (JPDA)

· 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 como JSR 59. Los cambios más notables fueron: comunicado de prensalista completa de cambios

· Palabra reservada assert (Especificado en JSR 41.)

· 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.

· non-blocking NIO (New Input/Output) (Especificado en JSR 51.)

· Logging API (Specified in JSR 47.)

· API I/O para la lectura y escritura de imágenes en formatos como JPEG o PNG

· Parser XML integrado y procesador XSLT (JAXP) (Especificado en JSR 5 y JSR 63.)

· Seguridad integrada y extensiones criptográficas (JCE, JSSE, JAAS)

· 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:

· 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 reemplazará 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).

· Java SE 9 — prevista para 23 de marzo del 2017:
En el 2005 se calcula en 4,5 millones el número de desarrolladores y 2.500 millones de dispositivos habilitados con tecnología Java.



Para qué sirve Java:
·         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. 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 reemplazará 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).
·         Java SE 9 — prevista para 23 de marzo del 2017: En el 2005 se calcula en 4,5 millones el número de desarrolladores y 2.500 millones de dispositivos habilitados con tecnología Java.
 Tipos de programas en Java:
  Applets, son pequeños programas que se incorporan en una página Web y que, por lo tanto, necesitan de un Navegador Web compatible con Java para poder ejecutarse.
  Aplicaciones, son programas standalone de propósito general que normalmente se ejecutan desde la línea de comandos del sistema operativo, se puede realizar cualquier programa que normalmente se crearía con algún otro lenguaje de programación.
   Servlets, son programas que están pensados para trabajar en el lado del servidor y desarrollar aplicaciones Web que interactúen con los clientes.
Ventajas:
·         Lenguaje Multi-plataforma: El código que es escrito en java es leído por un interprete, por lo que su programa andará en cualquier plataforma.
·         Manejo automático de la memoria. (para los que vienen de C/C++). El manejo de la memoria se hace automáticamente y utilizando el garbage collector.
·         ¡Es Gratis!
·         Desarrolla aplicaciones web dinámicas.
·         Desarrollar aplicaciones de servidor para foros en línea, almacenes, encuestas,procesamiento de formularios HTML y mucho más.
Desventajas:
·         Por su lentitud a la hora de ejecutar las aplicaciones (aunque ha mejorado con el tiempo)
·         ¿Porque sin la máquina virtual, su portabilidad no existe?. (Y si no tengo la JVM a mano?)
·         Requiere un interprete.
·         Algunas implementaciones y librerías pueden tener código rebuscado.
·         Una mala implementación de un programa en java, puede resultar en algo muy lento.

¿Que necesitamos para programar en JAVA?

Para empezar a programar en este lenguaje debemos contar con las siguientes herramientas:
  • JDK – Java Development Kit
  • JRE – Java Runtime Environment
  • Editor de Texto – Bloc de notas
  • IDE (Entorno de Desarrollo Integrado) – (Opcional)
Un IDE es opcional, ya que podemos escribir nuestras aplicaciones solo haciendo uso de un bloc de notas así sea menos ágil, sin embargo en el entorno profesional por lo general se hacen usos de Entornos que faciliten el desarrollo rápido, a continuación veamos cada uno de ellos.

JDK – Java Development Kit
Es un Software que provee las herramientas necesarias para el desarrollo de aplicaciones en JAVA, por lo cual si deseas programar aplicaciones en lenguaje JAVA necesitarás tener instalado en tu ordenador JDK.
  • javac.exe: es el compilador de Java.
  • java.exe: es el intérprete de Java.
JRE – Java Runtime Environment
Es un intermediario entre el Sistema Operativo y JAVA, básicamente es la Máquina Virtual de JAVA, por ende para poder ejecutar aplicaciones escritas en lenguaje JAVA necesitamos instalar en nuestro equipo JRE.

¿Qué más conceptos debemos tener en cuenta? 

Bytecode
Es el resultado de compilar un código escrito en JAVA, es como un archivo binario que contiene el programa a ejecutar. Este es interpretado por la Máquina Virtual de JAVA.

Máquina Virtual
Actúa como un puente que entiende tanto el bytecode como el sistema sobre el que se pretende ejecutar. Así, cuando se escribe una aplicación Java, se hace pensando que será ejecutada en una máquina virtual Java en concreto, siendo ésta la que en última instancia convierte de código bytecode a código nativo del dispositivo final.

Pasos Importantes:

Crear el código fuente. Un archivo de código fuente contiene texto escrito en el lenguaje de programación Java. Se puede utilizar un simple editor de texto para crear y editar el código.

Compilar el código fuente. El compilador traslada el código fuente en instrucciones que la máquina virtual de Java pueda entender. El compilador crea esas instrucciones en un archivo bytecode.

Compilar el código fuente. El compilador traslada el código fuente en instrucciones que la máquina virtual de Java pueda entender. El compilador crea esas instrucciones en un archivo bytecode.

Sin duda JAVA es un lenguaje de programación que vale la pena aprender, son muchas las ventajas en todos los niveles que propone y las facilidades que brinda a los desarrolladores, en conclusión, un lenguaje con una sintaxis muy parecida, con la cual de seguro también estarás aprendiendo indirectamente otros lenguajes.


No hay comentarios:

Con la tecnología de Blogger.