¿Qué es Java?

Qué es Java

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 han oído hablar de esta tecnología, podemos decir a modo de introducción, que Java es en la actualidad uno de los lenguajes de programación más demandados en el mercado — según Digitales Summit se calcula que entre 2017 y 2022 el sector será el 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 hace no 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 dónde 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 a Java como un conjunto de tecnologías en referencia a los diferentes productos y versiones que componen su familia.

Sus 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 el sistema operativo. 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 hasta a aplicaciones empresariales.
  • Multiplataforma. Podemos desarrollar nuestro código una única vez y ejecutarlo en cualquier plataforma. Lo que aumenta la portabilidad de nuestro proyecto siendo posible ejecutarlo en muchos sistemas operativos diferentes.

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

Tal y 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 la API gráfica 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 dudas su mayor aportación es la inclusión del estandar de JavaBeans y la API de JDBC para realizar conexiones a bases de datos.
  • Versión 1.2: en 1998 aparece otra evolución importante con la llegada del framework Collections y la API Swing la cual te permite desarrollar ventanas mucho más complejas.
  • Versión 1.3: avances pequeños en cuanto a las APIs, se añade soporte JNDI. También 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) o compilación en tiempo de ejecución.
  • Versión 1.4: se produce un salto importante en cuanto a las nuevas APIs. Se incorpora un fuerte soporte para XML, expresiones regulares, criptografía, etc.
  • Versión 1.5: también denominada Java 5, en esta versión 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 otro lado la inclusión del concepto de metadatos con el uso de anotaciones. Se amplía también el soporte para APIs orientadas a programación concurrente.
  • Versión 1.6: esta versión incluye una 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 puertas 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 que supone grandes mejoras como por ejemplo una mejor encapsulación de los paquetes e interfaces entre módulos bien definidos 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 de 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 tecnología, para pasar a convertirse en un módulo independiente. También se realiza un importante cambio en la política de uso por parte de Oracle. Se comienza un soporte extendido para 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 están 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 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 y vería exactamente lo mismo en cualquiera de estos sistemas operativos. Eso sí, todos debían disponer de lo que se denomina “la máquina virtual de Java (JVM, por sus siglas en inglés).

Imagen 0 en Qué es Java

¿Qué es un Servlet?

Al contrario que los Applets los “Servlets” son programas Java destinados a ejecutarse en un servidor de aplicaciones. Cuando el cliente (navegador) ejecuta un Servlet éste se ejecuta en el servidor de aplicaciones, generando una página html con los resultados obtenidos del proceso, finalmente éste se la entrega al cliente para que el usuario pueda ver los datos resultantes.

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

Con CGI, cada vez que se ejecuta una aplicación, se levanta un proceso en el servidor, se ejecuta, y finaliza el proceso. Esto impone una carga considerable en el servidor, en particular en aquellos en los que levantar un proceso tiene un coste alto. Los Servlets Java, en cambio, se cargan la primera vez que se ejecutan, y después de esto ya no se vuelven a cargar por que se quedan activos en la memoria.

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 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 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 al mundo web y que es apto para crear clases que manejen la lógica de negocio y acceso a datos de una manera eficiente y segura.

¿Qué es la Máquina Virtual Java?

De lo hablado anteriormente, todo el código se ejecuta en el lado servidor pero ¿qué ocurre con las aplicaciones que desarrollamos para un entorno de cliente o escritorio?,  o mejor aún ¿qué necesitamos para poder correr nuestros programas? Seguro que ya te va sonando 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 de comunicación que entiende tanto el bytecode como el sistema sobre el que se pretende ejecutar.

Principales IDEs para Java

Un IDE, o también llamado Entorno de Desarrollo Integrado, es un programa informático que nos ayuda en la tarea de programar, de modo que facilita enormemente el proceso de desarrollo y depuración de un producto software. Para ello cuenta con una serie de herramientas como son el editor, el compilador, la consola y el depurador. El editor a su vez dispone incluso de funciones de autocompletado de código y resaltado de sintaxis inteligente.

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 las marcas europeas y siempre habrá quien prefiera un auto americano o ruso. Así que lo mejor es enumerar aquellos IDEs que son más populares para que los conozcas y puedas probarlos.

Estos son los 3 IDEs más populares para desarrollar aplicaciones Java:

  • Eclipse: es un IDE muy popular de código abierto y ampliamente extendido. Fue desarrollado originalmente por IBM, 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, aplicaciones para la web, aplicaciones de escritorio 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 es una excelente elección.
  • NetBeans: NetBeans es otro entorno de desarrollo integrado de 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 producto 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 un IDE de Java pero también podemos desarrollar en otros lenguajes de programación como son 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 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 una versión de libre descarga la cual podemos probar gratis durante 30 días, y la versión Ultimate Edition que cuesta la friolera cantidad 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 el más adecuado para nuestro proyecto se basa más en una cuestión de experiencia y destreza con la cual escribamos nuestro código y el fin que desempeñará nuestro programa o la plataforma a la que éste irá destinado. Algunos IDEs 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 en el uso adecuado y buenas prácticas a la hora de planificar y elegir el Framework y/o lenguaje de programación adecuado. Y como ya decíamos antes, Java es todavía un gran lenguaje por excelencia.

Deja un comentario