DE VISUAL FOX PRO A JAVA Walter R. Ojeda Valiente Asunción - Paraguay, junio de 2016
INTRODUCCIÓN Si te has acostumbrado a programar en Visual FoxPro es muy probable que te cueste mucho cambiar de lenguaje. Y es que Visual FoxPro tiene muchas bondades y para aplicaciones administrativas, o sea las que requieren guardar una gran cantidad de datos en tablas y archivos, es de lo mejor que hay. Pero Visual FoxPro tiene un gran problema y que se irá agravando con el transcurrir del tiempo: está descontinuado. La última versión es del año 2004 y hasta allí llegó. No habrá siguiente. Como todos sabemos, la tecnología sigue avanzando y no se detiene, algo desarrollado en el año 2004 cada vez se irá haciendo más y más obsoleto. Entonces ¿qué hacemos? Si queremos seguir programando, alguna vez tendremos que cambiar de lenguaje, eso será inevitable, nos guste o no nos guste. Ese día llegará. Pero ahora nos surge la gran pregunta que puede tenernos totalmente indecisos durante mucho tiempo, habiendo tantos lenguajes de programación: ¿cuál de ellos elegir para reemplazar a nuestro tan estimado Visual FoxPro? Y es que Visual FoxPro es único, no existe algo ni siquiera parecido. Esa posibilidad de tener una ventana de comandos, de poder abrir tablas, de hacerles un browse, de indexar datos, de mostrar informes, etc. sin siquiera escribir una línea de código nadie más tiene. Opciones para reemplazarlo tenemos muchísimas, algunas de ellas muy buenas como Delphi, Lazarus, C++, Python, etc. Y por supuesto: Java Que es el motivo de este documento. Y como todos los lenguajes tienen ventajas y desventajas, a continuación veremos las de Java.
Ventajas 1. 2. 3. 4. 5.
Es el lenguaje de programación más usado en todo el mundo Es multiplataforma Es gratis Tiene muchísimos componentes gratuitos En Internet puede usarse del lado del Servidor y del lado del Cliente 6. Es el más usado para IoT (Internet of Things)
Desventajas 1. Es bastante diferente a Visual FoxPro 2. En redes locales de pocos recursos puede ser lento Como puedes ver, para un programador de Visual FoxPro, perfecto no es. Entonces ¿por qué elegirlo? Por las siguientes razones: 1. Es el lenguaje de programación más usado en todo el mundo. Eso significa que hay muchísima documentación tanto en español como en inglés y en muchos otros idiomas. También hay muchísimos foros y grupos donde puedes preguntar todas las dudas que tengas. 2. Es multiplataforma. O sea que puedes usarlo con Windows, con Linux, con Mac, con cualquier otro Sistema Operativo. Pero también con cualquier dispositivo que tenga un procesador: celulares, tabletas, automóviles modernos, y un largo etcétera. 3. Es gratis. Hay otros lenguajes muy buenos, como por ejemplo Delphi, pero que son de pago. 4. Tiene muchísimos componentes gratuitos. Cualquier cosa que necesites hacer muchos otros programadores de Java necesitaron hacerla antes que tú y crearon componentes para facilitarles las tareas. Miles y miles de esos componentes están a tu disposición y completamente gratis. 5. En Internet puede usarse del lado del Servidor y del lado del Cliente. Algunos lenguajes, como PHP, se usan solamente en el lado del Servidor. Otros lenguajes, como JavaScript, se usan solamente del lado del Cliente. Java puede usarse en ambos.
6. Es el más usado para IoT (Internet of Things). La tecnología está avanzando tan rápido que muchos aparatos eléctricos de uso cotidiano dentro de poco tiempo estarán conectados a Internet y enviarán y recibirán información. A eso se le llama Internet of Things o Internet de las Cosas en español. Y así tendremos muchos aparatos inteligentes y también muchos objetos que serán usados para eso. Y Java es el lenguaje líder para IoT. En este documento usaremos la última versión de Visual FoxPro (la 9, SP2) y la última versión de Java (que en el momento escribir este documento es la 8).
CAPÍTULO 1. LA POPULARIDAD DE JAVA Java consistentemente es el lenguaje de programación más utilizado en todo el mundo. El índice TIOBE que es el índice más creíble y más actualizado nos muestra estos datos para el mes de mayo de 2016:
Captura 1-1. Indice TIOBE para el mes de mayo de 2016 Como podemos ver, Java no es solamente el lenguaje más utilizado sino además que su porcentaje está aumentando. Ese casi 21% significa que de cada 5 programadores que hay en el mundo, 1 de ellos utiliza Java y los 4 restantes están repartidos en una gran multitud de lenguajes.
Captura 1-2. Indice TIOBE para los últimos 30 años Java apareció en el año 1995, a partir de allí su popularidad fue en aumento y como podemos ver en la Captura 1-2. está acostumbrado a encontrarse en el primer lugar.
Captura 1-3. Popularidad de los lenguajes de programación en los últimos 15 años La Captura 1-3. muestra mes a mes la popularidad de los lenguajes que en mayo de 2016 ocupan los 10 primeros lugares. Y nuevamente, como podemos ver, lo normal es que Java ocupe el primer lugar, y solamente a veces el Lenguaje C lo supera. Salvo una pequeña
excepción con C++ en el año 2004, ningún otro lenguaje ni siquiera se le acerca.
Captura 1-4. El lenguaje Java fue el más popular en el año 2015 La última frase de la Captura 1-4. refleja el sentir hacia Java: “El futuro se ve brillante para Java”. El índice TIOBE puedes encontrar en: http://www.tiobe.com/tiobe_index Y aunque los datos mostrados en las Capturas 1-1 al 1-3 por supuesto que irán cambiando con el transcurrir de los meses es evidente que Java se mantendrá en el primer lugar (o en el segundo) por varios (quizás muchos) años más. Si en Google escribimos: VISUAL FOXPRO obtendremos unos 452.000 resultados. Pero si escribimos: JAVA LANGUAGE obtendremos 77.200.000 resultados. Si escribimos: VISUAL FOXPRO YOUTUBE obtendremos 385.000 resultados. Pero si escribimos JAVA YOUTUBE obtendremos 41.500.000 resultados.
Si escribimos: FORO VISUAL FOXPRO obtendremos 60.800 resultados. Pero si escribimos: FORO JAVA obtendremos 9.520.000 resultados. Evidentemente la popularidad de Java es ampliamente superior a la de Visual FoxPro y entonces, sabiendo que encontraremos tanta documentación y ayuda para resolver nuestros problemas es una muy buena elección para reemplazar al viejo zorro.
CAPÍTULO 2. EMPEZANDO CON JAVA Lo primero que debemos entender es que Java funciona de manera diferente a Visual FoxPro, hay muchas cosas que son distintas o se hacen de distinta manera. ¿Cuál es mejor? Depende de las circunstancias y de los gustos de cada quien, pero hay que conocer y entender esas diferencias para poder obtener buen provecho del lenguaje. La tecnología de Java La tecnología de Java está compuesta por dos cosas:
1. Un lenguaje de programación 2. Una plataforma El lenguaje de programación Java Java es un lenguaje de programación de alto nivel que tiene las siguientes características:
Simple Orientado a los objetos Distribuido Multi-hilo Dinámico Neutral a la arquitectura Portable Alto rendimiento Robusto Seguro
En el lenguaje de programación Java todo el código fuente es escrito en archivos de texto plano los cuales deben tener la extensión .java sí o sí. Esos archivos conteniendo el código fuente luego serán compilados usando el compilador javac y si la compilación fue exitosa, entonces el resultado será un archivo con la extensión .class el cual no contiene código máquina correspondiente a la computadora donde se compiló, que sí es el caso con Visual FoxPro. En lugar de eso, el archivo .class contiene bytecodes que es el lenguaje máquina de la Java Virtual Machine (JVM) o máquina virtual de Java, en español. Luego, el lanzador de Java ejecuta la aplicación dentro de una instancia de la Java Virtual Machine.
Diagrama 2-1. Proceso de desarrollo de un programa Java ¿Cuál es la ventaja de hacerlo así?
Que exactamente el mismo archivo .class sin ningún cambio puede ejecutarse en una computadora con Windows o con Linux o con Mac o con Solaris. La traducción de los bytecodes contenidos en el archivo .class al lenguaje máquina de la computadora destino es tarea de la JVM. ¿Cuál es la desventaja de hacerlo así? Que la velocidad de ejecución es más lenta. Como hay un paso adicional (convertir los bytecodes al lenguaje máquina de la computadora destino) eso toma su tiempo y por lo tanto los programas escritos en Java suelen ser más lentos que los programas escritos en Visual FoxPro (o en C, C++, Delphi, etc.) aunque eso cada vez es menos cierto porque se está optimizando al máximo las JVM para que hagan su tarea lo más rápidamente posible.
Diagrama 2-2. Usando las JVM el mismo programa se ejecuta en distintos sistemas operativos Entonces, la tarea de cada JVM es tomar como entrada un archivo .class y traducir su contenido al código máquina específico del sistema operativo y de la computadora donde será ejecutado. La ventaja es muy grande: un solo archivo .class puede ser usado en cualquier lugar, lo único que se necesita es que exista una JVM que realice la traducción.
La plataforma Java Una plataforma es el entorno de software y/o hardware en el cual un programa es ejecutado. Algunos ejemplos de plataformas son: Windows, Linux, Mac, Solaris. La mayoría de las plataformas pueden ser descritas como una combinación entre el Sistema Operativo y el hardware que utiliza. La plataforma Java es diferente. ¿Por qué? Porque es una plataforma hecha solamente por software y que es ejecutada sobre plataformas de hardware. La plataforma Java tiene dos componentes:
La Java Virtual Machine La Application Programming Interface de Java, abreviada como API
La Java Virtual Machine es portada en varias plataformas de hardware. La API es una gran colección de componentes de software que proveen muchísimas capacidades útiles. Está agrupada en bibliotecas de clases relacionadas e interfaces. Esas bibliotecas son conocidas como packages (paquetes, en español).
Diagrama 2-3. La JVM y la API aíslan al programa del hardware subyacente Como puedes ver en el Diagrama 2-3., el programa .java no conoce la plataforma de hardware en la cual es ejecutado. Como la plataforma Java es independiente a la plataforma de hardware es un poco más lenta que el código nativo. Sin embargo, avances en el compilador y en las tecnologías de las JVM están conduciendo a un rendimiento muy cercano al del código nativo y sin afectar a la portabilidad.
¿Qué puede hacer para tí la tecnología Java? Java es un lenguaje de alto nivel, de propósito general (o sea que puede usarse para desarrollar cualquier tipo de aplicación). Cada implementación completa de la plataforma Java te provee de lo siguiente:
Herramientas de desarrollo. Aquí encontrarás todo lo que necesitas para compilar, ejecutar, monitorear, corregir, y documentar tus aplicaciones. Si eres nuevo, las herramientas que usarás serán el compilador javac, el lanzador java, y la herramienta de documentación javadoc. Application Programming Interface (API). La API provee la funcionalidad básica del lenguaje de programación Java. Ofrece una grandísima cantidad de clases que están listas para que las uses en tus aplicaciones, abarca desde los objetos básicos, hasta redes, seguridad, XML, acceso a bases de datos y mucho más. La API es muy, muy grande, algo de lo que contiene veremos más adelante en otro capítulo. Tecnologías de implementación. El software que se provee en el Java Development Kit (JDK) tiene mecanismos estándar como el Java Web Start y el Java Plug-in para implementar tus aplicaciones para los usuarios finales. Cajas de herramientas para interfaz con el usuario. Las cajas de herramientas JavaFx, Swing, y Java 2D, nos permiten crear muy avanzados Graphical User Interface (GUI) o Interfaz Gráfica con el Usuario, en español. Bibliotecas de integración. Para permitir el acceso a las bases de datos y a objetos remotos contamos con bibliotecas de integración, tales como: Java IDL API, JDBC API, JNDI API, Java RMI, y Java RMI-IIOP.
¿Por qué usar la tecnología Java? Puedes preguntarte si Java es la elección correcta para ti, veamos sus aspectos positivos:
Empezar rápidamente. Aunque el lenguaje de programación Java es un poderoso lenguaje orientado a los objetos, es muy fácil de aprender, sobre todo si conoces algo de C o de C++ Escribir menos código fuente. Comparaciones de métricas de programas (cantidad de clases, cantidad de métodos, etc.) sugieren que un programa escrito en Java puede ser hasta 4 veces más pequeño que el mismo programa escrito en C++ Escribir mejor código fuente. El lenguaje de programación Java fomenta las buenas prácticas de codificación y una recolección de basura automática ayuda a evitar pérdidas de memoria. Además, su orientación a objetos, su componente JavaBeans y su API tan completa y que puedes extender, te permiten simplemente reusar código fuente que ya fue optimizado y así tendrás menos errores. Desarrollar tus programas más rápidamente. El lenguaje Java es más simple que C++ y así puedes dividir por dos el tiempo de desarrollo, y además necesitarás escribir menos líneas de código fuente. Evitar dependencias con las plataformas. En otros lenguajes las bibliotecas dependen de la plataforma en la cual se compilaron, en Java no, todos tus programas siempre son portables entre plataformas. Escribir una vez, ejecutar en todas partes. Como las aplicaciones escritas en Java son compiladas en unos bytecodes totalmente independientes de la computadora en la cual se compilaron, esas aplicaciones pueden ejecutarse en cualquier plataforma Java. Distribuir las aplicaciones más fácilmente. Si usas el software Java Web Start, entonces tus usuarios podrán ejecutar tus aplicaciones con un simple clic del mouse. Un chequeo automático de versiones te asegura que tus usuarios siempre tengan la última versión de tu aplicación. Si actualizas tu aplicación entonces el Java Web Start automáticamente lo actualizará en la computadora del usuario.
Capítulo 3. Descarga e instalación Como todo lenguaje de programación que queremos usar, antes de poder hacerlo deberemos descargarlo e instalarlo, pero a diferencia de Visual FoxPro en el caso de Java tenemos muchas opciones, cada una de ellas orientada hacia una tarea en particular. Ya queda a nuestro cargo elegir cual de ellas (o cuales de ellas) usaremos.
Java SE (Standar Edition). La edición estándar permite el desarrollo y la implementación de aplicaciones para computadoras de escritorio, para Servidores, y para dispositivos. Incluye a JavaFx, utilizado para desarrollar aplicaciones web que tienen las características y las capacidades de las aplicaciones de escritorio, incluyendo aplicaciones multimedia interactivas. Java EE (Enterprise Edition). La edición empresarial aumenta en gran medida la potencia de la Java SE proveyéndole de herramientas necesarias para desarrollar software para las empresas, como por ejemplo la posibilidad de comunicarse con motores de bases de datos SQL. Java ME (Micro Edition). La edición micro es la utilizada para crear aplicaciones que se ejecutarán incrustadas en celulares, micro-controladores, sensores, televisores, impresoras, etc. Java Card. Sirve para desarrollar aplicaciones que se ejecutarán en tarjetas inteligentes y dispositivos similares, los cuales tienen muy poca memoria y capacidades de procesamiento. NetBeans IDE. Es un Integrated Development Envirnonment (IDE) o entorno de desarrollo integrado para facilitar la creación de aplicaciones.
Java Mission Control. Junto con Java Flight Recorder sirven para continuamente recolectar información de bajo nivel para analizar el comportamiento de la Java Virtual Machine (JVM) y de la aplicación.
Paquetes de instalación Dependiendo de lo que estemos necesitando, podemos instalar:
Java Development Kit (JDK). Es el único necesario para el desarrollo de aplicaciones. Incluye un JRE completo más herramientas para desarrollar, corregir y monitorear aplicaciones. Java Runtime Environment (JRE). Contiene todo lo requerido para que los usuarios ejecuten las aplicaciones. Servidor Java Runtime Envirnonment (Server JRE). Para la implementación de aplicaciones Java en Servidores. Incluye herramientas para monitorear a la JVM así como herramientas normalmente usadas para aplicaciones que se ejecutan en un Servidor.
¿Qué necesitaremos descargar e instalar? Si queremos desarrollar aplicaciones de tipo administrativo, como hacemos con Visual FoxPro, entonces:
Java Development Kit (JDK) Java Enterprise Edition SDK NetBeans IDE
En el Java Development Kit (JDK) encontraremos todo lo necesario para el desarrollo de aplicaciones normales. En el Java Enterprise Edition SDK tendremos módulos que se le agregan al JDK para la creación de aplicaciones empresariales. O sea que primero debemos tener instalado el JDK para poder usar. El NetBeans IDE es un entorno de desarrollo. ¿Y por qué necesitamos un entorno de desarrollo? Porque a diferencia de Visual FoxPro en Java el IDE no está integrado con el lenguaje. En Visual FoxPro si lo deseamos podemos escribir programas usando el Bloc de Notas del Windows pero nadie hace eso, todos usamos la ventana de comandos y allí escribimos MODIFY COMMAND, o MODIFY FORM, o
MODIFY CLASS, etc. En cambio en Java el IDE es independiente del lenguaje y para facilitarnos la tarea debemos descargar uno. No es obligatorio, podemos programar usando el Bloc de Notas del Windows o programas similares, pero en ese caso no contaremos con herramientas útiles para programadores. El NetBeans es el IDE más usado para programar en Java, pero hay otros buenísimos como el Eclipse y el IntelliJ. Decidirse por uno de ellos ya es cuestión del gusto de cada quien.
Enlaces de descarga Java Standard Edition http://www.oracle.com/technetwork/java/javase/downloads/index.html
Captura 3-1. Descarga de Java Standard Edition Java Enterprise Edition http://www.oracle.com/technetwork/java/javaee/downloads/index.html
Captura 3-2. Descarga de Java Enterprise Edition SDK NetBeans IDE https://netbeans.org/downloads/index.html
Captura 3-3. Descarga de NetBeans IDE
Aunque no es obligatorio, también es recomendable descargar los ejemplos y programas demo que podemos encontrar en: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads2133151.html
Captura 3-4. Descarga de demos y ejemplos
Mucha documentación (en inglés) puedes encontrar en: http://www.oracle.com/technetwork/java/javase/documentation/index.html
Captura 3-5. Documentación técnica (en inglés) sobre Java SE http://docs.oracle.com/javase/8/index.html
Captura 3-6. Documentación técnica (en inglés) sobre Java SE organizada por categorías
Como instalar esos programas ya no te mostraré porque es muy simple hacerlo y como programador de Visual FoxPro que eres, supongo que sabes muy bien lo que debes hacer para instalar un programa en Windows.
Capítulo 4. El primer programa Hasta aquí, ya conocemos bastante sobre lo que podemos hacer con Java, también hemos descargado e instalado lo que necesitamos pero aún no hemos visto un solo programa, así que empecemos. Todos estos programas fueron escritos con el NetBeans IDE. Aunque podrían haber sido escritos usando el Bloc de Notas del Windows o algún programa similar, esa no es la forma en la cual estamos acostumbrados a trabajar en Visual FoxPro. Allí siempre usamos un IDE y lo mismo haremos aquí.