Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Qué es Java: Principios básicos y evolución

Ángel Robledano
Qué es Java: Principios básicos y evolución

Tanto si quieres aprender programación como si quieres desarrollarte profesionalmente en el desarrollo de aplicaciones seguramente habrás oído hablar de Java. Para aquellas personas que no, podemos decir a modo introducción, que Java es en la actualidad uno de los lenguajes más demandados en el mercado -- según Digitales Summit se calcula que entre 2017 y 2022 el sector será la responsable de la creación de 1.250.000 empleos en España -- pues no solo sirve de base para poder entender y trabajar en la mayoría de lenguajes modernos, también es la navaja suiza que nos permite abarcar un gran número de proyectos que de otro modo sería impensable no hace muchos años.

Java es un lenguaje de programación de propósito general orientado a objetos, que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible permitiendo a desarrolladores escribir un programa y ejecutarlo en cualquier tipo de dispositivo sin tener que compilarlo una y otra vez.

Si dominas Java prácticamente puedes programar sobre cualquier plataforma imaginable por eso que no son pocas las empresas que solicitan cubrir posiciones en donde el conocimiento de este lenguaje de programación es clave.

Principios básicos de Java

Java fue creado por Sun MicroSystems en el año 1991 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. Su equipo de desarrollo trabajó por más de 18 meses hasta lograr liberar su primera versión estable.

Como curiosidad, decir que no está claro el origen del nombre aunque se cree que podría tratarse de las iniciales de sus diseñadores: James Gosling, Arthur Van Hoff, y Andy Bechtolsheim. 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.

Como un lenguaje de programación orientado a objetos (POO) el programador puede generar fragmentos de código autónomo, que puedan interactuar con otros objetos para resolver un problema ofreciendo soporte para diferentes tecnologías. De hecho es común referirse también Java como un conjunto de tecnologías en referencia a los diferentes productos y versiones que componen su familia.

Sun principios básicos son:

  • Simple. Una de las ventajas de Java reside en su sencillez con una moderada curva de aprendizaje. Esto hace que sea el lenguaje más usado en escuelas y universidades para mostrar los fundamentos de la programación.
  • Multihilo. Considerando el entorno multithread (multihilo), cada thread (hilo, flujo de control del programa) representa un proceso individual ejecutándose en un sistema. Cada hilo controla un único aspecto dentro de un programa, como puede ser supervisar la entrada en un determinado periférico o controlar toda la entrada/salida del disco. Todos los hilos comparten los mismos recursos, al contrario que los procesos, en donde cada uno tiene su propia copia de código y datos (separados unos de otros).
  • Seguro. Java es un lenguaje de programación seguro y estable. Pensado para poder operar en multitud de entornos. Desde el sector más lúdico a aplicaciones empresariales.
  • Multiplataforma. Podemos desarrollar nuestro código una única vez y ejecutarlo en cualquier plataforma. Lo que facilita el poder portar nuestro proyecto a diferentes sistemas operativos.

Evolución de Java: Desde JDK 1.0 hasta Java SE 11

Tal como comentaba antes, Java ya tiene una larga historia a sus espaldas desde su primera aparición estable en 1995. En la actualidad la última versión es su versión 11 y cómo es de esperar su evolución no solo ha sido constante sino también, en ocasiones, revolucionaria:

  • Versión 1.0: la primera versión del lenguaje contiene las clases principales , la máquina virtual y el API gráfico de AWT. Es un lenguaje que acaba de nacer.
  • Versión 1.1: aparece en 1997 e incorpora al lenguaje varias clases que faltaban como Readers /Writers ,Calendars y Bundles . Pero sin ningún lugar a duda su mayor aportación es la inclusión del estandar de JavaBeans y el API de JDBC para conexión a bases de datos.
  • Versión 1.2: en 1998 aparece otra evolución importante con la llegada del framework de Collections y el API de Swing que permite desarrollar interfaces de ventanas más complejos.
  • Versión 1.3: avances pequeños en cuanto a APIs, se añade soporte JNDI. Sin embargo el avance en cuanto a la arquitectura de la máquina virtual es importante ya que aparece la máquina HotSpot con compilación JIT (Just-in Time).
  • Versión 1.4: se produce un salto importante en cuanto a nuevas APIs. Se incorpora un fuerte soporte de XML, expresiones regulares, criptografía, etc.
  • Versión 1.5: también denomina Java 5 se producen dos saltos importantes a nivel del core del lenguaje. Por una parte la inclusión de tipos Genéricos que se echaban en falta en el mundo de las colecciones. Por el otro lado la inclusión del concepto de metadatos con el uso de anotaciones. Se amplía el soporte de APIs orientadas a programación concurrente.
  • Versión 1.6: esta versión contiene la inclusión de un API de compilación “on-the-fly” que permite gestionar servicios web de forma cómoda.
  • Versión 1.7: se produce una mejora de la máquina virtual incluyendo nuevos recolectores de basura.
  • Versión 1.8: llega Java 8 y se abren las puerta a la programación funcional con el uso de expresiones Lambda y Streams. Se realiza una revisión de APIS y se actualiza de forma importante la gestión de fechas.
  • Versión 1.9: la característica más llamativa es la modularización de la plataforma con Java 9 que supone grandes mejoras como una mejor encapsulación de los paquetes, interfaces entre módulos bien definidas y dependencias explícitas.
  • Java 10: aparece el 20 de marzo de 2018 con la mejora en la inferencia de tipos. Todo ello está haciendo que la plataforma evolucione más rápido y significativamente que lo que hasta hace unos años estábamos acostumbrados.
  • Java 11: el cambio fundamental en Java 11, es sin duda JavaFX que ha sido eliminado de la implementación estándar de la tecnología, para convertirse a pasar en un módulo independiente. También coincide con un importante cambio de política de uso por parte de Oracle y el comienzo de un soporte extendido a usuarios premium.

¿Qué es un Java Applet?

Los applets son programas escritos en Java y forman parte de los componentes de una página Web. Ya en desuso, pues han demostrado ser bastante inseguros, proporcionan funcionalidades a las páginas creadas en HTML imposibles de ofrecer de otro modo. Hay que pensar que en aquellos tiempos todo se resolvía a base de tablas y el CSS era cosa de ciencia ficción.

El uso de Applets llegó a ser ampliamente extendido porque proporcionaba la posibilidad de ejecutar código con independencia del sistema operativo usado para visitar una Web. Un usuario podría estar usando Windows o Mac e incluso Linux que vería exactamente lo mismo en cualquiera de estos sistemas operativo. Eso sí, todos debían disponer lo que se llama “la máquina virtual de Java (JVM, por sus siglas en inglés).

Imagen 0 en Qué es Java

¿Qué es un Servlet Applet?

Al contrario que los Applet los “Servlets” son programas Java destinados a ejecutarse en un servidor. Cuando el cliente (normalmente a través del navegador) ejecuta un Servlet éste ejecuta en el servidor, genera una página html con los resultados, y la devuelve al cliente.

¿Pero qué ventajas nos ofrecen? Los Servlets ocupan el mismo lugar que tienen los programas CGI en muchos servidores, pero tienen una tecnología moderna y eficiente, que presenta algunas ventajas importantes con respecto a la ejecución con CGI.

Con CGI, cada vez que se ejecuta una aplicación, se levanta un proceso en el servidor, se ejecuta, y se baja el proceso. Esto impone una carga considerable al servidor, en particular a aquellos en los que levantar un proceso tiene un costo alto. Los Servlets Java, en cambio, se cargan la primera vez que se ejecutan, y luego no se vuelven a cargar.

Las aplicaciones con CGI deben conectarse a la base de datos cada vez que se ejecutan. Los Servlets pueden mantener conexiones abiertas y utilizarlas a medida que las van necesitando.

Todo esto permite administrar eficientemente el manejo de los recursos del servidor abaratando costes de proceso y mantenimiento en su gestión.

¿Qué es JSP?

No podríamos continuar sin mencionar los JavaServer Pages (JSP). Una tecnología Java que basándose en los servlets que ayuda a los desarrolladores de software a crear páginas web dinámicas basadas en HTML y XML, entre otros tipos de documentos. JSP es similar a PHP, pero usa el lenguaje de programación Java.

El rendimiento de una página JSP es el mismo que tendría el servlet equivalente, ya que el código es compilado como cualquier otra clase Java. A su vez, la máquina virtual compila dinámicamente a código de máquina las partes de la aplicación que lo requieran.

La principal ventaja de JSP frente a otros lenguajes es que el lenguaje Java es un lenguaje de propósito general que excede el mundo web y que es apto para crear clases que manejen lógica de negocio y acceso a datos de una manera eficiente y segura.

¿Qué es la Máquina Virtual Java?

De lo anterior, todo el código se ejecuta del lado servidor pero ¿qué ocurre con las aplicaciones que desarrollamos para un entorno de cliente?,  o mejor aún ¿qué necesitamos para poder correr nuestros programas? Seguro que te suena el término máquina virtual Java (en inglés Java Virtual Machine, JVM).

El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. Es aquí donde la JVM se muestra como una parte fundamental de la plataforma Java y actúa como un puente que entiende tanto el bytecode como el sistema sobre el que se pretende ejecutar.

Principales IDE para Java

Un IDE, o también llamado Entorno de Desarrollo Integrado, es un programa que nos ayuda en la tarea de programar de modo que facilita enormemente el proceso de desarrollo y depuración de un software. Para ello cuenta con una serie de herramientas como el editor, compilador, consola y depurador e incluso funciones de autocompletado de código y resaltado de sintaxis inteligente. Es como si intentamos comparar el bloc de notas que antes comentaba con un procesador de textos como el Word de Microsoft Office. La diferencia es brutal por todo lo que podemos hacer y la rapidez con la que logramos resultados.

Recomendar el mejor IDE para trabajar no es tarea fácil. Cada programador tiene sus preferencias y lo que para uno es cómodo para otro puede resultar lo contrario. Es como hablar de coches. Algunos estarán encantados con coches de marcas asiáticas, otros preferirán europeas y siempre habrá quien prefiera un auto americano o ruso. Así que lo mejor es enumerar aquellos IDE que son más populares para que los conozcas y puedas probar aquel que mejor se ajuste a ti.

Estos son algunos de los 3 mejores IDEs para trabajar desarrollando aplicaciones Java:

  • Eclipse: es un IDE muy popular de código abierto y ampliamente extendido. Fue desarrollador originalmente por IBM aunque actualmente cuenta con una gran comunidad que le da soporte con una gigantesca biblioteca de plugins. Es multiplataforma (Windows, Linux y Mac) y dispone de nuevas versiones cada año. Con Eclipse es posible desarrollar todo tipo de aplicaciones para web, escritorio o usando Java, C, C++, JSP, perl, Python, Ruby y PHP. Su mayor punto fuerte reside en su asistente y capacidad para depurar errores. A medida que vas programando Eclipse lanza recomendaciones que nos ayudan a optimizar nuestro código hasta niveles que rozan el elegante guante blanco. Sin duda una excelente elección.
  • NetBeans: NetBeans es otro entorno de desarrollo integrado basado en código abierto. En lo personal adoro este IDE porque gracias a su enfoque podemos desarrollar nuestras aplicaciones como módulos (como un componente de un software), lo cual resulta sumamente cómodo pues podemos reutilizar nuestro código para diferentes proyectos las veces que queramos sin mayor complicación. NetBeans es el IDE oficial de Java pero también podemos desarrollar en otros lenguajes como PHP, C, C++ e incluso HTML 5. Entre sus detractores hay quien comenta que el desarrollo de una GUI sobre NetBeans es algo complicado y que no cuenta con la ingente cantidad de plugins y extensiones de las que sí cuenta con Eclipse, además de carecer de soporte nativo para trabajar con webapps (.war, .jsp, y servlets).
  • IntelliJ Idea: Desarrollado por Jet Brains es un IDE que cuenta con dos versiones. La Community Edition que es de libre descarga con la que además podemos probar gratis durante 30 días, la versión Ultimate Edition que cuesta la friolera de más de 500 dólares de suscripción anual según el plan que contratemos. Desarrollado por Jet Brains es un IDE que cuenta con dos versiones. Con IntelliJ podemos programar sobre diferentes lenguajes y proporciona soporte para trabajar además de con JAVA , Node JS, PHP, Python, Ruby, Sass, TypeScript, AngularJS, CoffeeScript, CSS, HTML, JavaScript, LESS, etc. Además ofrece integración con GIT lo que permite trabajar con diferentes versiones de nuestro software sin afectar a la línea maestra de nuestro desarrollo.

Por supuesto que hay muchos más y elegir aquel más adecuado a nuestro proyecto se basa más en una cuestión de la experiencia y destreza con el que escribamos nuestro código y el fin que desempeñará nuestro programa o la plataforma a la que irá destinada. Algunos IDE proporcionan por ejemplo un soporte mejorado para el desarrollo de aplicaciones móviles mientras que otros están más orientados a trabajar de cara al desarrollo de aplicaciones de lado servidor y sus tecnologías asociadas. Por esa razón, la máxima “Busque, compare y si encuentra algo mejor…” no puede ser más acertada.

Los desarrolladores de software invierten gran parte de su tiempo no solo en formación sobre nuevos lenguajes, también el uso adecuado y buenas prácticas a la hora de planificar y elegir el Framework y lenguaje adecuado. Y como decíamos antes, Java es todavía el lenguaje por excelencia.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Programador Java Web

Programador Java Web

carrera

Incluye 8 cursos:

  • Curso de Spring Framework de Java
  • Curso de Desarrollo Web con Java EE
  • Curso Online de Hibernate y JPA

y 5 cursos más!

Duración: 46 horas y 15 minutos

Python VS Java: Comparativa 2019

Python VS Java: Comparativa 2019

Lenguajes de programación

31 de Julio de 2019

Descubre Python y Java dos de los lenguajes backend más destacados y demandados por las empresas. En esta comparativa trataremos de definir y exponer qué es cada lenguaje y que objetivos ...

Curso de Java desde Cero (Versión de 2016)

Curso de Java desde Cero (Versión de 2016)

curso

En este curso aprenderás los fundamentos de la programación con Java: el lenguaje más usado por las grandes empresas. Java te permitirá crear desde aplicaciones web, aplicaciones móviles y aplicaciones de escritorio, entre otras muchas utilidades.

Duración: 7 horas y 22 minutos

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars