martes, 24 de enero de 2012

Una maquina para Java

Que es la máquina virtual de java o (JVM) ?

Básicamente la Máquina Virtual de Java (en ingles Java Virtual Machine) es el núcleo del lenguaje de programación Java, puesto que es imposible ejecutar un programa Java sin tener una JVM implantada en el ordenador.

La máquina virtual de Java se denomina al procesador o entorno virtual que se utiliza para interpretar los bytecodes de los binarios de Java, ya que como sabemos Java se hizo para correr en cualquier plataforma sin recompilar los binarios. De esta manera este entorno virtual se puede obtener para nuestra arquitectura y sistema operativo sin modificaciones a nuestro programa original.
  • Podemos entonces generar un binario y este podrá Correr en Linux, MAC OSX, FreeBSD, Solaris, o Windows, y para las arquitecturas disponibles en las que podamos obtener la JVM, como ser AMD64, SPARC, PIV, etc. etc.
Al compilar un código con extensión .java, se crean unos archivos con extensión .class, que contienen los bytecodes de la aplicación.

  • Los bytecodes son un código máquina de bajo nivel, que es ejecutado por la maquina virtual, no por el hardware del ordenador.
Resumiendo y para no hacerlo mas complicado de lo que es, siempre que se ejecuta un programa Java, las instrucciones que lo componen no son ejecutadas directamente por el hardware del ordenador, sino que son pasadas a un software intermedio (JVM), que es el encargado de que las instrucciones sean ejecutadas por el hardware.



La JVM lleva a cabo la emulación del conjunto de bytecodes, bien por un proceso de interpretación o bien mediante un compilador JIT (Just In Time), que convierte el bytecode a código nativo de la plataforma de destino, lo que permite una ejecución mucho más rápida, aunque el inconveniente que tiene es el tiempo que necesita al principio para la compilación.
La principal desventaja de los lenguajes basados en máquina virtual, es que efectivamente son más lentos que los lenguajes completamente compilados, debido a la sobrecarga que genera tener una capa de software intermedia entre la aplicación y el hardware de la computadora. No es lo mismo una aplicación desarrollada en un lenguaje como C o C++, donde el archivo binario que genera el compilador se ejecuta directamente sobre el hardware, que tener que pasarle ese código a la maquina virtual para que lo ejecute el hardware de la maquina. Sin embargo, la gran ventaja de estos, entre muchas otras, es que el código compilado, al no depender de una maquina física en particular, sino de una máquina virtual, puede ser ejecutado en cualquier S.O., siempre que, claro esta, disponga de una maquina virtual.




En la actualidad, existen alternativas a la JVM provista por Sun Microsystems que permiten una velocidad comparable a una aplicación compilada en C++ nativa en la arquitectura, un ejemplo de esto es Kaffe, Kaffe es una máquina de Java OpenSource que puede compilarse sin mayores modificaciones en nuestra arquitectura necesaria y correrá increíblemente más rápida que la distribución estándar de JVM de Sun Microsystems y consumirá muchos menos recursos.

Escrito por → Israel Iglesias

lunes, 16 de enero de 2012

Descubriendo su Potencial → JAVA


JAVA es un lenguaje de programación creado para satisfacer una necesidad de la época (así aparecen todos los lenguajes) planteada por nuevos requerimientos hacia los lenguajes existentes.

Antes de la aparición de JAVA, existían otros importantes lenguajes (muchos se utilizan todavía). Entre ellos el lenguaje C era probablemente el más popular debido a su versatilidad; contiene posibilidades semejantes a programar en ensamblador, pero con las comodidades de los lenguajes de alto nivel.

Uno de los principales problemas del lenguaje C (como el de otros muchos lenguajes) era que cuando la aplicación crecía, el código era muy difícil de manejar. Las técnicas de programación estructurada y programación modular, paliaban algo el problema. Pero fue la programación orientada a objetos (POO u OOP) la que mejoró notablemente el situación. La POO permite fabricar programas de forma más parecida al pensamiento humano, de hecho simplifica el problema dividiéndolo en objetos y permitiendo centrarse en cada objeto, para de esa forma eliminar la complejidad. Cada objeto se programa de forma autónoma y esa es la principal virtud.

Al aparecer la programación orientada a objetos (en los ochenta), aparecieron varios lenguajes orientados a objetos y también se realizaron versiones orientadas a objetos (o semi—orientadas a objetos) de lenguajes clásicos.

Una de las más famosas fue el lenguaje orientado a objetos creado a partir del C
tradicional. Se le llamó C++ indicando con esa simbología que era un incremento del lenguaje C (en el lenguaje C, como en JAVA, los símbolos ++ significan incrementar). Las ventajas que añadió C++ al C fueron:

  • Añadir soporte para objetos (POO).
  • Los creadores de compiladores crearon librerías de clases de objetos (como MFC1 por ejemplo) que facilitaban el uso de código ya creado para las nuevas aplicaciones.
  • Incluía todo lo bueno del C, C++ pasó a ser el lenguaje de programación más popular a principios de los 90 (sigue siendo un lenguaje muy utilizado).
Evolucion de los Lenguajes de Programacion

Otras adaptaciones famosas fueron:

  • El paso de Pascal a Turbo Pascal y posteriormente a Delphi.
  • El paso de Basic a QuickBasic y después a Visual Basic.
Pero el crecimiento vertiginoso de Internet iba a propiciar un profundo cambio...


En la actualidad JAVA es un lenguaje muy útil debido a la opción multiplataforma que provee (desde PC, Linux, Windows, hasta MAC, teléfonos, pocket PCs, etc.)


En 1995 pasa a llamarse JAVA y se da a conocer al público. Adquiere notoriedad
rápidamente. JAVA pasa a ser un lenguaje totalmente independiente de la plataforma y a la vez potente y orientado a objetos. Esa filosofía y su facilidad para crear aplicaciones para redes TCP/IP ha hecho que sea uno de los lenguajes más utilizados en la actualidad. La versión actual de JAVA es el llamado JAVA 2. 

Sus ventajas sobre C++ son:

  • Su sintaxis es similar a C y C++.
  • No hay punteros (lo que le hace más seguro).
  • Totalmente orientado a objetos.
  • Muy preparado para aplicaciones TCP/IP.
  • Implementa excepciones de forma nativa.
  • Es interpretado (lo que acelera su ejecución remota, aunque provoca que las aplicaciones JAVA se ejecuten más lentamente que las C++ en un ordenador local).
  • Permite multihilos.
  • Admite firmas digitales.
  • Tipos de datos y control de sintaxis más rigurosa.
  • Es independiente de la plataforma.
Y la última ventaja (quizá la más importante) se consigue ya que el código JAVA no se compila, sino que se precompila, de tal forma que se crea un código intermedio que no es ejecutable. Para ejecutarle hace falta pasarle por un intérprete que va ejecutando cada línea. Ese intérprete suele ser la máquina virtual de JAVA (JVM).

Ahora pasemos con las características:

  • Lenguaje simple

Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo.


  • Orientado a objetos
Java fue diseñado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los métodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programación orientada a objetos, especialmente en entornos cada vez más complejos y basados en red.

  • Distribuido
Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas.

  • Interpretado y compilado a la vez

Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador.

Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time).


  • Robusto

Java fue diseñado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de una familia entera de errores (la aritmética de punteros), ya que se ha prescindido por completo los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.

  • Seguro (?)

Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. A nadie le gustaría ejecutar en su ordenador programas con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.

  • Indiferente a la arquitectura

Java está diseñado para soportar aplicaciones que serán ejecutadas en los más variados entornos de red, desde Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas distintas y con sistemas operativos diversos. Para acomodar requisitos de ejecución tan variopintos, el compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura diseñado para transportar el código eficientemente a múltiples plataformas hardware y software. El resto de problemas los soluciona el intérprete de Java.

  • Portable

La indiferencia a la arquitectura representa sólo una parte de su portabilidad. Además, Java especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos, de manera que los programas son iguales en todas las plataformas. 
  • Alto rendimiento - Multihebra

Hoy en día ya se ven como terriblemente limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede interactuar con el usuario mientras otro presenta una animación en pantalla y otro realiza cálculos.
  • Dinámico

El lenguaje Java y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.

  • Produce applets

Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets.
Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava, escrito íntegramente en Java.
Por su parte, las applets son pequeños programas que aparecen embebidos en las páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones de red, presentar menús y cuadros de diálogo para luego emprender acciones, etc.


Para terminar puedo dejarles con un link a una nota aportacion para Java Mexico que se titula → “Mas allá de ser un lenguaje de programación, Java es un mundo de oportunidades” 

Besos y Buena Vibra! ♥
Esto lo escribio → Mercedes Anai

Una leyenda comienza → JAVA

Los orígenes de JAVA son cuanto menos curiosos, sus orígenes se remontan a principios de 1990.
Sun Microsystems pretendía introducirse en el mercado de la electrónica de consumo creando software para electrodomésticos, como lavadoras, microondas, tostadoras, etc...
La tarea se le encomendó inicialmente a un equipo de 13 personas, dirigidas por James Gosling, y inicialmente intentaron llevarlo a cabo usando C y C++.
Pronto Gosling advirtió que las características de C o C++, no se ajustaban a lo que necesitaban para aquel proyecto, ya que aumentaban de forma alarmante el coste de pruebas y depuración.


Por ello en sus ratos libres se dedico a modificar el lenguaje, eliminando las graves fallas de seguridad que según Gosling tenía, y simplificando enormemente la sintaxis, para que los nuevos programadores pudieran empezar cuanto antes a desarrollar, dando origen a Oak (roble en inglés), el padre del actual JAVA.

Se rumorea que el nombre de Oak se debe a un roble que se veía a través de la ventana del despacho de Gosling.
El Oak cambio mas tarde su nombre por el de JAVA, al descubrirse que ya existía un lenguaje de programacíon llamado así.
De nuevo mas rumores, según dicen se llamo JAVA, por un tipo de café llamado así, que les encantaba a Gosling y su equipo.

El intento de Sun Microsystems de introducirse en el mundo de los electrodomésticos no fue del todo bien, pero se animó a Gosling a crear un proyecto nuevo llamado Green, que consistía en un sistema de control completo de los aparatos electrónicos y del entorno de un hogar, imaginaos una casa totalmente automatizada, con este fin se construyó un ordenador experimental denominado *7 (Star Seven), que controlaba todos los dispositivos electrónicos de la casa mediante una pantalla táctil.



En ese proyecto ya aparecía Duke, la actual mascota de JAVA, a la que han conservado hasta hoy, según dicen, por el enorme aprecio que le cogió el equipo de Gosling.


Gosling también se aventuró en otro proyecto denominado VOD (Video On Demand), que consistía en un intento de crear una televisíon interactiva.
Aunque ni el proyecto Green ni el proyecto VOD llegaron a "triunfar" comercialmente, durante su desarrollo se basaron los estandares del lenguaje JAVA que usamos actualmente.

Mas tarde, Bill Joy, co-fundador de Sun, advirtió la creciente popularidad de internet y pensó en JAVA para alcanzar la supremacía de la empresa en ese sector, presentando oficialmente a JAVA en agosto de 1995.


Escrito por → Israel Iglesias

sábado, 14 de enero de 2012

Aviso Oportuno


Estos días de enero, han sido un poco pesados para sus servidores, ya sea por trabajo y en otro caso motivos familiares muy fuertes. Así que pedimos disculpas por no proporcionar tanto contenido como se desea en el blog.

Esta noche publicaremos una breve introducción a lo que pretendemos sea un didáctico y practico "curso" o "tutorial" a la programacion orientada a objetos, específicamente JAVA.

El fin de semana lo dedicare exclusivamente a crear contenido para el sitio, esperando contar con su comprension, les mando un cordial saludo en nombre del equipo de Living JAVA, el cual es muy pequeño jejeje, pero si deseas apoyar en algo por favor no dudes ni tantito en comentarlo y yo me contactare contigo, de verdad es de gran interés para nosotros contar con mas lindas personitas en el equipo.

Atte: Mercedes Anai Cruz Martinez


sábado, 7 de enero de 2012

Karel el robot dentro de la Programacion



Para comenzar: ¿Qué es Karel el Robot?

"Karel el Robot" es un lenguaje de programación para programar a un robot (Karel) mediante instrucciones sencillas y bien estructuradas, fáciles de entender y utilizar sin la necesidad de manejar algún otro lenguaje de programación.

Karel vive en su propio mundo, formado por calles, avenidas y bardas por las que deberá trasladarse para recoger trompos, guardarlos y llevarlos a otro lugar, dependiendo de cuál sea su objetivo.



(Historia personal → Conocí a Karel en la preparatoria, primero por puro ocio, mas adelante por mi participación en la Olimpiada Mexicana de Informática en el cual la primera fase consta de hacer puntos resolviendo problemas de este curioso robot-cito.)

Karel en la OMI

Karel es una herramienta que promueve la creatividad y la lógica de una manera ordenada. Lo que crea una base fuerte para el aprendizaje de la programación. Las instrucciones que utiliza son sencillas, por lo que no requieren un estudio profundo para su comprensión.

Durante la OMI se utiliza Karel el Robot en las primeras fases de exámenes prácticos estatales e incluso en la nacional. Ya que permite identificar a estudiantes con la habilidad de desarrollar algoritmos creativos y resolver problemas del tipo de la Olimpiada, aún cuando no tengan el dominio de un lenguaje de programación más complejo.


Fuente y Ejemplos de Programación con Karel en → OMI Oficial/Karel

(Ahora una opinión personal → Si deseas adentrarte al mundo de la programación, esta herramienta es útil, formativa y divertida porque no?, ademas soporta ejercicios con  recursividad! Yo me divertí mucho con el y aprendi algo, que pascal es aburrido ah no!. )

Descarga el ejecutable para programar y jugar con Karel en el enlace de arriba o mejor te lo pongo aqui ademas de encontrar documentación en español e ingles.

Ps: Tengo el libro sobre Karel en versión física, pero les conseguiré pronto, mínimo tratare, la versión digital para pasárselos aquí y puedan saber un poco mas sobre el! ;)



Living Java!