Download Modulo 2 Inicio con Java Archivo

Document related concepts
no text concepts found
Transcript
Modulo 2. Inicio con Java
Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como
lenguaje de programación o como plataforma, pero, ¿que es en realidad Java?, ¿cual es
su historia?, ¿para que me sirve Java?, ¿como aplicamos Java en el mundo real?, y mas
importante aún ¿Cómo Java nos ayuda a desarrollar el curso de lenguajes de programación?.
A continuación resolveremos parte de estas dudas, las no resueltas las trataremos más
adelante
1. Historia de Java.
El lenguaje de programación Java es diseñado para resolver los desafíos del desarrollo
de aplicaciones que se ejecuten en diferentes ambientes y en redes heterogéneas. Algunos de
estos desafíos tienen que ver con la seguridad en las aplicaciones, el consumir un mínimo de
recursos, funcionar en diferentes plataformas de hardware y software, y crecer
dinámicamente.
Java se origino como parte de un proyecto de investigación que pretendía desarrollar un
software para una amplia gama de dispositivos. La meta era desarrollar una aplicación
pequeña, confiable, portable y que se pudiese distribuir en tiempo real.
La opción a este problema era desarrollar la aplicación en un lenguaje conocido, C++
fue entonces la solución. Luego de comenzar el proyecto se encontraron dificultades lo
que llevo a crear enteramente la plataforma Java.
Java aparece entonces como una solución diferente el desarrollo y la forma como se
debe distribuir el software. [1]
2. ¿Qué es entonces Java?
Java es un lenguaje de programación de alto nivel caracterizado por ser:
Simple
Distribuido
Multitarea
Orientado a objetos
Portable
De alto rendimiento
De arquitectura neutra e Robusto
independiente
Seguro
2.1 Simple, orientado a objetos y familiar.
Las características primarias del lenguaje de programación de Java incluyen una lengua
simple en la que se puede programar sin un entrenamiento extenso. Los conceptos
fundamentales de la tecnología de Java se aprenden rápidamente, así; los programadores
pueden ser productivos desde el principio. El lenguaje de programación Java es diseñado
dentro del grupo de lenguajes orientado a objetos, siendo la tecnología de desarrollo
orientado a objetos la corriente principal que se ha gestado después de mas de 30
años de la programación.
Con Java los programadores usan y acceden a librerías de objetos ya probados, dichas librerías
extienden el comportamiento y funcionalidad de datos básicos a través de: entradas y
salidas, interfases de red o interfaces graficas. Estas librerías se pueden a su vez
extender para proporcionar nuevos comportamientos.
Aunque C++ fue rechazado como lengua para la solución que dio origen a Java, el
lenguaje Java no se alejo del lenguaje C++ y conservo muchas de las características de objetos
usados por el lenguaje. Causando esto que Java sea familiar a un programador de C++ y pueda
emigrar fácilmente hacia el.
2.2 Seguro y robusto
Java es diseñado para crear software altamente confiable. Proporciona una extensa
verificación en tiempo de compilación, seguida de un segundo nivel de verificación en tiempo
de ejecución Java es diseñado para ser ejecutado en diferentes plataformas y ambientes de
producción, por lo cual la seguridad se convierte de vital importancia, Java no permite
construir aplicaciones que invadan el exterior de la aplicación, los programas de Java no
pueden ser atacados por código de puertas traseras, virus, etc.
El modelo de administración de la memoria es extremadamente simple, los objetos se
crean por un nuevo operador, no hay tipo de datos definidos explícitamente, no existe
manejo de apuntadores y se cuenta con un recolector de basura (garbage collection) memoria
no usada de forma automática.
2.3 Arquitectura neutra y portable
Como se ha mencionado la tecnología Java fue diseñada para desarrollar aplicaciones
que funcionaran sin problemas en diferentes tipos de redes, diferentes sistemas
operativos, etc. Para solucionar este problema el compilador de Java genera un
bytecode – formato intermedio y neutro, indiferente de la arquitectura que se puede
transportar eficientemente - .
La característica de neutralidad del bytecode es apenas una porción de lo que hace
verdaderamente a un sistema “portable”. Java determina y específica los tamaños de sus
tipos de datos, y del comportamiento de sus operadores aritméticos, de esta forma se
garantiza que los programas se ejecuten de igual forma sin incompatibilidades por pasar de
una arquitectura de hardware o software a otra.
La plataforma que hace a Java un lenguaje de arquitectura neutra y portable se conoce como
la Maquina Virtual de Java (JVM). Existe documentación y una referencia amplia de las
especificaciones para una maquina virtual.
2.4 Alto desempeño
Java alcanza su mayor desempeño adoptando el esquema de funcionamiento: El run-time
interprete no necesita realizar comprobaciones; El recolector de basura funciona como un hilo
independiente que se ejecuta en background y con prioridad baja, asegurando que se
encuentre memoria disponible cuando se necesite.
En Java los cálculos o procesamientos extensos pueden ser diseñados y reescritos en
código nativo, conectándose a la tecnología Java para mejorar el desempeño cuantas veces sea
necesario.
2.5 Interpretado, Multitarea, y dinámico
Las aplicaciones de red actuales, tales como el navegador HotJava para Internet,
necesitan comúnmente hacer varias operaciones o tareas al mismo tiempo. Java
proporciona los medios para construir aplicaciones con muchos hilos de ejecución
concurrentes gracias a la capacidad multithreading (multitarea), dando así una gran
interactividad para el usuario final.
Java soporta la multitarea en el nivel de lenguaje con la adición de una sofisticada
sincronización primitiva: La librería del lenguaje proporciona la clase Thread (hilo) y el sistema
de run-time proporciona un sistema de monitoreo y condiciones para controlar los bloqueos.
Mientras que el compilador de Java es cerrado y estricto en su comprobación estática en
tiempo de compilación, el lenguaje y sistema de run-time es totalmente dinámico al
momento de ligar las clases, a su vez que solo liga las clases necesarias. [1]
3. ¿Qué es entonces la tecnología JAVA?
Java como tecnología esta compuesto por:
Un lenguaje de programación
Un ambiente de desarrollo
Un ambiente de aplicación
Un ambiente de despliegue
4. Algunas consideraciones de Java
La Maquina Virtual de Java, es una maquina imaginaria que trata de simular las
implementaciones de software de una maquina real. La JVM brinda las especificaciones de una
maquina de hardware, de esta manera se logra una independencia de los programas
realizados en java de la plataforma especifica de hardware. La JVM se podría pensar como un
puende entre el Hardware real y el código bytecode generado en la compilación.
El “Garbage Collection”, es el encargado de administrar la memoria en Java en tiempo de
ejecución, de esta manera el programador no se preocupa por la administración de la memoria
en las diferentes etapas de desarrollo.
Seguridad en el codigo, en Java se logra a través de la Java Runtime Environment (JRE). El JRE
ejecuta el código compilado para una JVM y realiza la carga de clases (a través del cargador de
clases), la verificación del código (a través del verificador de bytecodes) y, por último,
la ejecución de código.
El cargador de clases es el responsable de colocar en memoria las clases necesarias por un
programa Java, este adiciona seguridad en el momento de la carga, no permite la ejecución de
virus, troyanos, etc.
5. ¿Como funciona Java?
Todo el código es escrito en archivos de texto plano que terminan con extensión .java.
Estos archivos se conocen con el nombre de fuentes y son compilados en archivos .class
por el compilador javac. Un archivo .class no contiene el código nativo que es entendido
por el procesador, en lugar de esto contiene el bytecode que es entendido por la maquina
virtual (JVM). Al ejecutar una aplicación en Java esta es lanzada y puesta en
funcionamiento entonces con una maquina virtual desarrollada para la plataforma apropiada.
La maquina virtual de Java esta disponible en muchos sistemas operativos, así los mismos
archivos .class que contienen el bytecode se pueden utilizar de una plataforma a otra.
Algunas maquinas virtuales tienen funcionalidades diferentes o realizan pasos adicionales
en tiempo de ejecución para mejorar el rendimiento de las aplicaciones.
3.1 La plataforma Java.
Una plataforma es el ambiente de hardware o de software en el cual un programa
funciona. Hemos mencionado ya algunas de las plataformas más populares como el
Sistema operativo (OS) de Microsoft Windows, de Linux, de Solaris, y el OS de Mac. La
mayoría de las plataformas se pueden describir como una combinación del sistema
operativo y del hardware subyacente. La plataforma de Java se diferencia de la mayoría de
las otras plataformas por que es una plataforma basada en software solamente y que funciona
por encima de otras plataformas basadas en hardware.
La plataforma de Java tiene dos componentes:
• La máquina virtual de Java
• Las interfaces de programación de aplicaciones Java (API)
Como se ha visto a lo largo del documento, la maquina virtual de Java es la base para la
plataforma Java y esta se encuentra por encima de las plataformas basadas en hardware.
El API es una colección de componentes de software que brindan muchos beneficios. Dentro
de las librerías se encuentran diferentes tipos de classes e interfaces, las librerías son
conocidas con el nombre paquetes. [2]
REFERENCIAS
[1] James Gosling (1996), The Java Language Environment. En version online:
http://java.sun.com/docs/white/langenv/
[2] Sun Microsystems, The Java Tutorials. En version online:
http://java.sun.com/docs/books/tutorial/ Tutorial de Java en SUN