Introducción al Desarrollo con Java I

El lenguaje de programación Java es uno de los más solicitados a nivel corporativo y a nivel mundial. Es importante mencionar que en el mercado existen un par de alternativas que también se encuentran bien solicitadas y remuneradas, como los son Python y C# (.Net), por lo que el que desee abrirse camino a través de estas plataformas, puede hacerlo. La finalidad de este tutorial es dar una introducción al Java “corporativo”, constará de diferentes partes y revisaremos los conceptos relacionados al uso que se le da a Java dentro del ámbito empresarial y específicamente al tipo de aplicaciones que se están desarrollando, los frameworks y librerías que más se utilizan. Sin embargo, es importante destacar, que el mundo de Java es tan amplio, que cada empresa y programador puede estar en desacuerdo con el orden que seguiremos en este tutorial. Eso no es un problema, es simplemente parte de mi experiencia profesional plasmada para todos aquellos que deseen aprender sobre Java.

Respecto a los Entornos de Desarrollo Integrado (IDE en sus siglas en inglés) de programación más conocidos o utilizados en el mundo de Java, los más importantes son:

  • Eclipse
  • Netbeans
  • Intelli J

Estableceremos brevemente las ventajas y desventajas de cada uno, desde mi experiencia personal, empezando desde el último de los mencionados, ya que para efectos de este tutorial nos basaremos en el más utilizado, Eclipse.

  • Intelli J: Para muchos el mejor de los IDE que existen en el mercado, es intuitivo y después de familiarizarse con la interfaz gráfica, es fácil de utilizar, además de que existe mucha información disponible y gran cantidad de plugins para ampliar sus funcionalidades por defecto. En este se basa Android Studio, el cual es una personalización del mismo para desarrollo Java en Android, hecho a medida para Google.La desventaja es que es pago, pero existen cracks disponibles a lo largo de internet.
  • Netbeans: El primero en hacerse “famoso” era la primera opción de desarrollo ya que estaba impulsado por la empresa Sun (que desarrollo Java) antes de su compra por parte de Oracle. En mi experiencia personal, creo que es el mejor para hacer desarrollo de aplicaciones de escritorio (desktop) bajo Java.
  • Eclipse: Es el IDE universal. Tiene desde versiones para cada necesidad y lenguaje del mercado, hasta opciones de personalización y compatibilidad para prácticamente cualquiera de las plataformas de desarrollo. Sus ventajas son amplia comunidad de desarrollo, es open source y gratuito en la mayoría de los casos. En este mismo se basan algunas opciones comerciales como los de IBM Websphere Studio, PHP Zend Studio y Rapidclipse (gratuito pero propietario).

 

Ahora bien, qué tiene que ver esto con el Java “corporativo”, en que es necesario conocer los posibles entornos con los que nos encontraremos al ir a trabajar en una empresa.

Acá haremos un pequeño paréntesis donde colocaremos unos enlaces que deben ser consultados para ampliar los conocimientos acerca de la manera de desarrollar en Java y algunos conceptos que debemos tener claros para seguir adelante.

Sintaxis, Orientación a Objetos y casi todo lo que se debe saber de Java:

https://www.tutorialspoint.com/java/ acá encontraras el tutorial on line, su versión PDF para consulta posterior en https://www.tutorialspoint.com/java/java_tutorial.pdf y un editor en línea para hacer ejercicios en https://www.tutorialspoint.com/compile_java_online.php lamentablemente está en inglés, pero casi toda la documentación de calidad existente, está en línea. Uno de los libros que les puedo recomendar para estudiar Java paso a paso es Cómo programar en Java – Paul Dietel y Harvey Dietel, lo pueden comprar en línea o buscar su descarga en alguna plataforma.

Luego surgirán las preguntas, acerca de cómo se programa Java EE, o lo que es lo mismo, cómo se hacen proyectos orientados a web, o proyectos de webservices o tecnologías http en Java, debido a la enorme cantidad de tecnologías disponibles, colocaré este enlace acá http://www.tutorialspoint.com/listtutorials/java/j2ee/1 y me retiraré lentamente.

A efectos de este tutorial, haremos algunos ejercicios del tutorial de Tutorials Point en Eclipse, para demostrar que sin necesidad de compilar los programas, podemos hacer nuestras prácticas en este IDE.

Instalación y Configuración de Java

Al momento de escribir estas líneas, la última versión del Java SDK o mejor conocido como el JDK es la Java SE Development Kit 8u151, ingresen al siguiente link http://www.oracle.com/technetwork/pt/java/javase/downloads/jdk8-downloads-2133151.html para su descarga. Es bueno recordar, que pueden utilizar también Java 7 en sus últimas versiones. Solo deben recordar que hay diferencias entre JRE y JDK, que es mejor que se investiguen en internet.

Instalación y Configuración Básica de Eclipse

Si bien, algunas empresas ya hacen personalizaciones de este IDE para evitar que las personas tengan que hacer la mezcla de plugins y tecnologías correctas, es preferible tener una idea de cómo se hacen estas configuraciones.

Una recomendación, sacada de mi experiencia profesional, mientras nos acostumbramos a varios conceptos básicos como “workspaces” (carpeta de trabajo), creemos una carpeta que se llame Bin en la raíz de Windows, ahí instalaremos el IDE, Add Ons, Plugins, etc. En esta misma carpeta, creemos una carpeta que llamaremos Servers, para descargar e instalar los “application server”. Luego en la raíz sugiero crear una carpeta llamada Sources, para agrupar todos los diferentes workspaces, que en la medida que desarrollemos, estaremos necesitando. Una vez más:

  • C:\Bin
  • C:\Bin\servers
  • C:\Sources

Vamos a la página https://www.eclipse.org/downloads/ y descarguen el instalador adecuado para su sistema operativo. Anteriormente ustedes solo tenían que descargar un zip con el IDE adecuado, pero el instalador hará esta tarea por ustedes. Después seleccionamos la opción Eclipse IDE for Java EE Developers:

Sugiero encarecidamente, versionar los IDE de eclipse, por lo que coloquen la versión en la carpeta de instalación. Es más que probable que en nuestra vida de programación, utilicemos múltiples instalaciones de Eclipse, sin contar las variantes que configuremos para distintos desarrollos.

Después que hayamos completado la instalación, al iniciar el programa, se nos pedirá crear un workspace. Por defecto, el intentará crearlo en la carpeta del usuario. Por las mismas razones anteriormente citadas, además que si cambiamos o reinstalamos el sistema operativo, podemos perder el acceso a dicha carpeta, siempre prefiero versionar los workspaces, por proyectos y/o IDE’s o por cualquier criterio que se nos ocurra:

Apenas entrar, tendremos la siguiente ventana de bienvenida:

Al momento de cerrar esta vista, llegaremos a la vista JEE que es la que podemos utilizar por defecto. Este IDE contiente diferentes “perspectivas”, que son diferentes configuración de vistas, las cuales generalmente están a la parte superior derecha. La única forma de irnos acostumbrando a estas vistas, es en la medida que las vayamos a utilizar.

Nuestro IDE recién instalado, debería verse así:

Hasta este punto, ya tenemos muchas opciones para empezar a desarrollar. Dependiendo de los tutoriales que se vean en línea, les pueden decir que debe configurar el Path con la instalación de Java, para que puedan compilar sus programas directamente desde el CMD. Esto lo dejo a discreción de ustedes, ya que hay bastantes tutoriales en la web, acerca de cómo hacer esto y porqué.

A partir de este punto, vamos a generar un pequeño “Hola Mundo” paso a paso, con capturas de pantalla para posteriormente pasar a la segunda parte de este tutorial.

Proyectos en Eclipse

Sobre el Project Explorer a la izquierda del IDE, hacemos clic derecho sobre cualquier punto en el espacio  en blanco y desplegaremos el siguiente menú emergente. De igual manera en la barra de menús superior donde en la sección File, podemos llegar a la misma vista:

Al seleccionar la primera opción, Project, llegaremos a los Wizards que tiene Eclipse. Para efectos de esta primera parte usaremos el Java Project.

Acá ya podemos revisar que por defecto está utilizando el JRE, así que podemos de una vez, configurar el IDE para que haga uso del JDK que queremos utilizar (JDK 8 en mi caso) y lo dejamos configurado, por lo que entraremos al enlace Configure JREs… que se encuentra a la derecha.

Seleccionamos Add

En Directory vamos a ubicar el directorio de instalación de nuestro JDK. En mi caso es

C:\Program Files\Java\jdk1.8.0_101

En ese momento el actualizará el resto de los campos.

Solo nos queda finalizar “Finish” y llegaremos a la opción de seleccionar el JDK por defecto del IDE.

Aplicar y cerrar “Apply and Close” y volvemos a la vista del Wizard.

Al darle Finalizar “Finish”, nos preguntará si deseamos cambiar la perspectiva para coincidir con el tipo de proyecto. Para este caso específico le diremos que “No”

Ahora tendremos el proyecto listo para comenzar a agregar paquetes y clases.

Paquetes y Clases

Ambos términos están ampliamente documentados dentro de la literatura de Java, por lo que no nos detendremos en este punto, sino lo mínimo necesario para continuar, los Paquetes “Package” es la organización que se le da a la estructura de clases, es una forma de diferenciar o agrupar los diferentes archivos que componen a un proyecto. Cada vez que que agregamos una subestructura al proyecto y la separamos por “.” punto, en la estructura de archivos se creará una nueva carpeta.

Y para finalizar esta sub sección, sino sabes qué es una clase, entonces debes volver pronto a la literatura de Java recomendada en las líneas superiores…

Siguiendo con nuestro proyecto, ahora vamos a agregar una nueva Clase “Class”:

En la siguiente vista crearemos una estructura para agregar varios ejemplos en el mismo proyecto, y generamos una clase Main, con el wizard. De esta forma ya tenemos parte del código para seguir con el ejemplo.

El resultado de la ejecución es el siguiente:

Y el código resultante es el siguiente

package com.tutorial.ejemplo1;
 
/**
 * @author Rexduran
 *
 */
public class HolaMundo {
 
 /**
 * @param args
 */
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 
 }
 

Agregamos nuestro comando para imprimir el hola mundo y corremos el programa en la opción Run As, hay diferentes maneras de llegar a esta opción, la más rápida en este ejemplo es con el botón derecho directamente desde la vista del código fuente.

El código a ejecutar el es siguiente:

package com.tutorial.ejemplo1;
 
/**
 * @author Rexduran
 *
 */
public class HolaMundo {
 
 /**
 * @param args
 */
 public static void main(String[] args) {
 
 System.out.println("Hola Mundo");
 
 }
 


Y el resultado de la ejecución lo podemos ver en la pestaña consola “Console” en la parte inferior de nuestro IDE.

Con esto hemos finalizado la primera parte de nuestro tutorial. Posteriormente nos adentraremos en los frameworks que más se escuchan en este momento. Sin embargo, es importante recordar que, el universo Java, se encuentra en expansión.

Próximo capítulo Maven.

Un ganador…

Un ganador enfrenta, razona y supera el problema.
Un perdedor le da vueltas y nunca logra pasarlo.

Un ganador se compromete y actúa en consecuencia.
Un perdedor hace promesas pero no actúa y saca disculpas para no hacerlo.

Un ganador dice ante una tarea concluida: Soy bueno, pero puedo hacerlo mejor.
Un perdedor dice: Yo no soy tan malo como muchas otras personas.

Un ganador respeta y escucha a todas las personas y aprende de ellas.
Un perdedor se resiente con los que saben más que él y trata de encontrarles sus defectos.

Un ganador trabaja mucho más que un perdedor y aún así, tiene tiempo.
Un perdedor está siempre muy ocupado. Muy ocupado … quejándose.

Un ganador comparte este mensaje con sus amigos.
Un perdedor lo guarda sólo para sí mismo.

Cuando un ganador comete un error, dice: Yo me equivoqué, y aprende del error.
Cuando un perdedor comete un error, dice: No fue mi culpa.

Nuestras actitudes en todo lo que pensamos, decimos y hacemos, repercutirán siempre en nuestra actitud emotiva, por ende con quienes interactuamos (autor anónimo).

Fuente: http://unajaponesaenjapon.com

Cuando te vuelves un meme

TrollfaceSiempre los vemos y sonreímos, se han vuelto una representación de algún estado, pensamiento y/o emoción. Desde la rana René haciendo alguna reflexión, profunda o nó… que luego se le pasa, hasta aquellos que son universales y que se rigen por derechos de autor como nuestro estimado amigo, Trollface, creado por Carlos Ramirez.

Los utilizamos a diestra y siniestra y ya son parte de nuestro imaginario. Tan es así, que a veces son una sustitución plena de los emoticonos (emojis) en nuestras entradas de diferentes redes sociales. Celebridades o casi celebridades que sin quererlo se han vuelto iconos de la cultura popular. Para muestra preguntenle a Steve Harvey, quien probablemente será el símbolo de los errores garrafales, hasta que exista una nueva representación.

por-que-se-equivoco-Steve-Harvey-en-Miss-Universo-interior

Pero hay un lado más gris, a veces, con finales felices, otras tantas veces no. ¿Qué pasa cuando sin quererlo, nos volvemos un memé? Puede pasarle a cualquiera de nosotros, una foto tomada en el momento justo, alguna idea particular y se vuelve viral, incluso con proyección global. Existen muchos casos, niños de identidad desconocida a los que se le dan cientos de caracterizaciones. Personas cuya identidad desconocemos que son transformadas en celebridades instantáneas, algunas veces para bien, pero en la mayoría de las veces tendrá consecuencias negativas en la mayoría de las personas. Si creemos que el ciberacoso o, su denominación de moda, ciberbullying son terribles, imaginemos que gente desconocida, utilice tu imagen para cualquier cosa que se les ocurra.

yaomemegfx

Ahora, existen muchas implicaciones que no hemos analizado a profundidad, y que además, deben ser tomadas en cuenta. Los derechos sobre las imagenes deben pertenecer a las personas, en muchos casos, incluso deberían generar regalías económicas. ¿Quién defiende estos derechos en un entorno como la web? ¿A quién acudimos? Para mi, estas preguntas aún no tienen respuestas claras y concisas.

Si me toca dar una recomendación, es que evitemos utilizar las imágenes de personas, sean conocidas o no. Existen cientos de memes que son caricaturas, imágenes públicas o incluso animales. Creo firmemente que hay suficientes expresiones en la naturaleza y en nuestra cultura popular, para cubrir la amplia gama de expresiones que se nos puedan ocurrir.

Memes-de-los-Simpson-5

 

Economía Compartida (Uberización)

A file illustration picture shows the logo of car-sharing service app Uber on a smartphone next to the picture of an official German taxi sign in Frankfurt, September 15, 2014. A German court is set to rule March 18, 2015, whether Uber's novel taxi-hailing service violates driver licensing rules, a decision that could lead to a nationwide ban on the service. The case in a Frankfurt court brought by German taxi operator group Taxi Deutschland against Uber is one of more than a dozen lawsuits filed across Europe in recent months by taxi industry associations against the San Francisco-based company. Taxi drivers around the world consider Uber unfairly bypasses local licensing and safety regulations by using the internet to put drivers in touch with passengers. REUTERS/Kai Pfaffenbach/Files (GERMANY - Tags: BUSINESS EMPLOYMENT CRIME LAW TRANSPORT)

Se ha puesto en boga un nuevo término, la “Uberización” y es que el fenómeno corporativo que ha logrado esta empresa, se ha vuelto, si cabe el término, “viral”. Y es que ahora existen cientos de plataformas que intentan replicar el éxito del modelos de negocios, aplicándolo a casi cualquier idea de negocios.
Para muchos es la panacea de la monetización de las aplicaciones web, la democratización de la economía, lo llaman algunos. Sin embargo, no todo es tan bueno como parece. En algunos países la aplicación ha logrado poner en jaque a los gremios de taxistas tradicionales. Y como en todo negocio exitoso, existe un área gris.
Cada adelanto tecnológico, ha encontrado vacíos en las legislaciones de los países, las cuales siempre van un paso detrás de la tecnología. En el caso de este modelo de negocios, se ha hecho más que evidente. Uber Technologies Inc. es una empresa internacional que proporciona a sus clientes un servicio de transporte, haciendo uso de una aplicación móvil, la cual conecta a los pasajeros con los conductores de vehículos registrados en su servicio. No es la primera empresa en aplicar este modelo de negocios, pero es la primera en hacerlo de forma tan exitosa, tanto es así que su nombre se esta volviendo sinónimo de este modelo.

Y ha estas alturas, estimado lector, puede preguntarse, ¿qué tiene de malo este emprendimiento? ¿por qué la llegada de esta empresa ha suscitado en algunos casos una oleada de protestas? ¿por qué hay países que han decidido simplemente prohibir la aplicación? Los puntos débiles del modelo de negocio vienen en diferentes formas y no en todos los países tienen las mismas implicaciones. En todas las economías, la competencia se abre camino y es lo que induce finalmente los cambios en cada una de sus áreas. Por ejemplo, en Colombia, se produjeron protestas masivas de los gremios de transportistas, sus razones, autos sin matrícula especial y con seguros de autos personales, ejercen de transporte, sin que las autoridades puedan hacer nada al respecto. Por el lado de los clientes, todo se reduce a algo, bajos costos y confianza. Alemania optó por prohibirla. En Inglaterra, los taxistas tradicionales han estado haciendo lobby para que se prohíba o se regule su utilización, pero es que en este país, los taxistas, deben estudiar 3 meses y aprobar un examen para ejercer dicha profesión.DOCU_GRUPO
En este orden de ideas, el mismo modelo de negocios ha entrado en otras áreas de la economía. Ahora existen aplicaciones semejantes, que abarcan desde el arrendamiento de habitaciones, hasta restaurantes caseros. Y en cada una de esas áreas, los clientes se favorecen mientras que los negocios tradicionales, tiemblan o luchan para adaptarse y prosperar con una competencia feroz y directa, donde en muchos casos las legislaciones e impuestos que les son inherentes a su actividad, no son aplicables a su competencia.
Es esta el área gris que mencionamos anteriormente, ¿cómo se pueden regular estos mercados secundarios para que los clientes no se vean perjudicados? Por ejemplo, si el automóvil en el que se desplazan sufre un accidente, ¿qué ocurre? ¿Si al comer en un restaurante casero, el cliente sufre una alergia, cómo se procede? ¿Quién protege al cliente, que al llegar a la ubicación mencionada para hospedarse, descubre que lo estafaron? Estas son las preguntas, a las que las regulaciones y las leyes deben responder, y deben hacerlo pronto, ya el modelo de negocios se está consolidando y lo abarcará todo.
Incluso en el mercado Venezolano, están apareciendo referencias u imitaciones interesantes, de dichos emprendimientos. Es que el poco incentivo de nuestro mercado interno para las empresas extranjeras, han hecho un caldo de cultivo para ideas que pueden resultar en iniciativas comerciales que podrían madurar y resultar competitivas al salir al mercado internacional. Mientras tanto, como clientes, hagamos uso de estas plataformas, disfrutemos los beneficios y recordemos que la novedad no está exenta de riesgos.

“La semana pasada, Alphabet, la firma matriz de Google, superó a Apple como la empresa más valiosa del mundo al reportar utilidades de US$4.900 millones en el último trimestre de 2015, un aumento de US$200 millones comparado con el mismo periodo en el año anterior.”

Fuente BBC

Sobre el trabajo colaborativo

Working_Together_Teamwork_Puzzle_Concept

Mucho se ha escrito sobre y acerca del trabajo colaborativo, esta entrada en particular no pretende tener un rigor académico para definir o explicar qué es el trabajo colaborativo, es más bien, mi reflexión personal sobre el impacto que ha tenido y seguirá teniendo sobre la manera de hacer las cosas.

Desde el momento en el que se pudieron editar y enviar faxes desde los terminales de computadora, se aceleró este movimiento que en el presente nos permite editar documentos en línea, controlar el acceso a los mismos, divulgarlos, entre otros. Hemos llegado al principio, a la esencia de lo que a mi manera de ver es el trabajo colaborativo, la edición simultánea de cualquier documento, por varios colaboradores a la vez, desde cualquier lugar. Aquello que nació en los foros, donde todos daban una opinión particular sobre temas comunes, ha llegado a que podamos manejar una hoja de cálculo desde varias localidades, sedes y departamentos, accediendo al mismo documento, a la vez.

Para las nuevas generaciones, es simplemente algo natural, han vivido en este mundo de las redes sociales, donde podemos visualizar los eventos de nuestro alrededor en un foro constante, desde sus opiniones hasta en la vida misma de las personas. Sin embargo, existe una fuerza laboral a la que le está costando algo de trabajo adaptarse. Expresiones como nube, red, compartir, en línea, y algunas otras a las que no hago referencia para no hacer publicidad gratuita, generan una gran incertidumbre en aquellos usuarios que se habían acostumbrado a una sola forma de hacer las cosas. Es un handicap que debe ser superado por todos aquellos que quieran seguir escalando en el mercado laboral.

El esfuerzo laboral, ya no es solo colaborativo, también es de hecho multidisciplinario. Las nuevas aplicaciones y herramientas ofimáticas, ahora permiten que personal de diferentes áreas y/o profesiones distintas, en localidades diferentes, puedan trabajar en un mismo documento, participando activa y simultáneamente en su edición. De igual forma, hacer una videoconferencia es cuestión de formalizar la hora y depende prácticamente de la calidad de la conexión.

En este sentido, se nos presentan algunas de las desventajas. Dependemos excesivamente de la conexión a Internet. De igual manera, en algunos tipos de documentos o de aplicaciones, es importante mantener el adecuado control de versiones, para mantener un hilo coherente de los cambios realizados y por quién.

Retos hay muchísimos. Quizás el más importante es mantener una formación constante. A aquellos que manejan personal, es indispensable, preocuparse por la preparación de sus recursos humanos y fortalecerse en la utilización de las nuevas tecnologías. Existe una brecha de conocimientos entre las generaciones, las aplicaciones móviles, han permitido que una parte importante de la fuerza laboral, entienda lo que significan los conceptos mencionados anteriormente, sin embargo, puede que carezcan de la experiencia necesaria para su correcta utilización en el ámbito laboral. Es por ello que es necesario “colaborar” en el desarrollo y formación de los recursos humanos.

Cualquiera sea la organización, será la misma dinámica la que irá dictando su propio ritmo en la adaptación e incorporación de dichas tecnologías. Lo importante es mantener los ojos abiertos y cuestionar, siempre aportando, la forma tradicional y los paradigmas establecidos. Después de todo, los resultados siempre serán la voz que disipará las dudas al incorporar y adoptar nuevas tecnologías.

Es, en definitiva, darle la bienvenida a la sociedad de la información y del conocimiento.