Está en la página 1de 19

Programación Orientada a Objetos I

SEMANA 1
JAVA

1
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni
utilizar los contenidos para fines comerciales de ninguna clase.
2
ESTE DOCUMENTO CONTIENE LA SEMANA 1
ÍNDICE

JAVA..................................................................................................................................................... 4
OBJETIVOS ESPECÍFICOS ........................................................................................................................... 4
INTRODUCCIÓN ...................................................................................................................................... 4
1. CONCEPTOS BÁSICOS DE JAVA........................................................................................................... 5
2. JAVA (LENGUAJE)............................................................................................................................. 5
2.1. LENGUAJE DE PROGRAMACIÓN MULTIPLATAFORMA ........................................................ 7
2.2. JAVA Y LA POO..................................................................................................................... 8
2.3. JAVA COMO LENGUAJE DE ALTO NIVEL .............................................................................. 9
2.4. LA PLATAFORMA JAVA ........................................................................................................ 9
3. JVM (MÁQUINA VIRTUAL DE JAVA) .................................................................................................. 10
4. BYTECODE. ................................................................................................................................... 11
5. JDK: KIT DE DESARROLLO DE JAVA .................................................................................................... 12
6. IDE DE PROGRAMACIÓN................................................................................................................. 13
6.1. ECLIPSE .............................................................................................................................. 13
6.2. BLUEJ ................................................................................................................................. 14
COMENTARIO FINAL.......................................................................................................................... 17
REFERENCIAS........................................................................................................................................ 18

3
ESTE DOCUMENTO CONTIENE LA SEMANA 1
JAVA

OBJETIVOS ESPECÍFICOS
 Definir conceptos tales como: Java, Máquina Virtual de Java, Bytecode, kit de desarrollo de
Java, IDE de programación.

 Describir la relación de Java con el paradigma de programación orientado a objetos.

 Describir las características de Java como un lenguaje de programación multiplataforma.

INTRODUCCIÓN

Java es un lenguaje de programación de alto nivel orientado a objeto (POO). Creada por Sun
Microsystem quienes a inicio de los 90 lo diseñaron con el objetivo de facilitar el desarrollo
integrado. Inicialmente orientado a electrónica de consumo, pero luego de un análisis de mercado
y el inicio del boom de la WEB se reoriento al desarrollo multiplataforma para así a inicios de 1996
lanzar la primera versión, hasta la fecha se han liberado 8.

Actualmente, Java está presente en celulares con JavaME, dispositivos Android que usan Java y
Dalvik como máquina virtual, programas de escritorio con JavaSE o implementaciones
empresariales con JavaEE, además hoy es propiedad de Oracle Corporation luego de que esta
adquiriera Sun a mediados de 2009, teniendo un mayor enfoque en las aplicaciones para
empresas.

Pero Java además de ser un lenguaje también es una plataforma, puesto que para mantener la
interoperabilidad en distintos sistemas necesita bytecode, un lenguaje intermedio y la Máquina
Virtual que interpreta el bytecode de manera que el resultado sea igual en cada sistema o
arquitectura.

4
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1. CONCEPTOS BÁSICOS DE JAVA
Las aplicaciones desarrolladas en Java requieren para funcionar los siguientes elementos básicos:

Máquina Virtual de Java (JVM) encargada de hacer de intérprete entre los programas bytecode y
los distintos sistemas operativos y/o plataformas.

Las librerías de Java que no son más que rutinas pre-escritas estandarizadas que se usan
constantemente.

El bytecode que son los programas compilados


que van a ser corridos por la JVM y que harán
uso de las antes descritas para generar la Código en Java
aplicación que se despliega para el usuario.
Para la construcción de Aplicaciones en Java
existe un kit de desarrollo llamado JDK el cual Compilador Java
contiene todo lo necesario para compilar el
código escrito en lenguaje Java. Para esto el
administrador escribe programas en archivos Bytecode Librerías Java
de texto que luego pueden compilar a través de
línea de comando, lo que generará un bytecode
que será interpretado por la máquina virtual.
JVM
Para facilitar el proceso de desarrollo se han
creado programas conocidos como ambientes
de desarrollo integrados, referidos como IDE
Sistema Operativo
por su sigla en inglés, estos componen una
aplicación más cómoda, las herramientas de Hardware
control que facilitan el desarrollo tales como
control de fuente, debugger o corrección de
errores, compleción de código entre otras. Figura 1
Fuente: material elaborado para el curso.
Muchas de estas traen la opción de incluir el
JDK en la instalación pero la falta del JDK hace
de la IDE un simple editor de texto.

De esta manera el ciclo de un programa de Java es compilar el Código Fuente, lo que genera un
bytecode, el cual es interpretado por la máquina virtual que se encarga de generar el mismo
resultado independiente de la plataforma, ésta puede ir desde una máquina dedicada pasando por
un sistema operativo hasta un simple web browser.

Un equipo sin Java debe primero instalar ya sea el JDK o la versión mínima que es el JRE
(ambiente para ejecutar Java) que solo contiene las librerías y la máquina virtual (JVM).

2. JAVA (LENGUAJE)

5
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Antes de ser liberado como Java, se le conoció como proyecto Green, un lenguaje multiplataforma
inspirado en C++ con el objetivo inicial de ser usado en electrónica de consumo, lo que sería una
analogía de los televisores inteligentes de nuestra época, a poco andar y dada las limitaciones de
extender C++, optan por desarrollar su propio lenguaje al cual denominaron en primera instancia
Oak. Lo que concluyo en 1993 con First Person Juc el cual no tuvo éxito.

Esto obligó a Sun a repensar en como orientar todo el tiempo y recursos invertidos en Oak y es así
como nace Java en enero de 1995 lo que concluye en la liberación del primer JDK 1.0 en enero de
1996 luego de un año de liberar candidatos Alfas y Betas.

Todo esto concluye en la primera versión comercial Java 1.1 lanzada en febrero de 1997 que
contemplaba:

 Código reutilizable Java Beans.


 Clases y Herencias propias de POO.
 Kit para desarrollo de aplicaciones gráficas AWT.
 Enlace a múltiples bases de datos JDBC análogamente a ODBC.
 Métodos de Invocación remota RMI.
 Programas dinámicos con reflexión computacional.
 Compilador de traducción dinámica específico para Microsoft JIT.

Todo esto hacía de Java una potente herramienta capaz de producir software multiplataforma que
se conecta a distintas bases de datos de manera nativa con un código que es capaz de tener
aspectos dinámicos.

A esto hay que sumarle que desde un comienzo los arquitectos se plantearon objetivos de diseño
ambiciosos:

 Simple, orientado a objeto y familiar.


 Robusto y seguro.
 Portable de arquitectura neutral.
 De alto desempeño.
 Interpretable, dinámico y multihilo.
 La plataforma debe permitir en cómputo distribuido.

Fue esta filosofía la que sumada a los aspectos técnicos antes mencionados lograron que Java se
trasformara en la herramienta que adoptaron fácilmente los desarrolladores de la época.

Referencias a la declaración de principios se puede encontrar en:

http://www.oracle.com/technetwork/java/intro-141325.html

6
ESTE DOCUMENTO CONTIENE LA SEMANA 1
La siguiente liberación fue J2SE 1.2, este renombre fue para diferenciar subsets específicos de la
plataforma, por lo que desde entonces además se comenzarían a liberar las versiones micro ME
(J2ME)y empresa EE (J2EE) y los posteriores incrementos fueron en J2SE 1.3 en mayo 2000 y en
febrero del 2002 J2SE 1.4 con el consecuente aumento de clases y bibliotecas para el estándar de
Java, ampliando el alcance de Java entre las que se destacan elementos como depurador, CORBA,
sonido, expresiones regulares, ipv6, API de login, XML, extensiones de criptografía y Java Web
Start que permiten cargar aplicaciones desde el navegador.

La quinta versión representó un cambio significativo en Java, donde además se cambió la


nomenclatura y paso a llamarse Java 5.0 la adición de tipos genéricos como C++ o propiedades de
sus directos competidores como bucles for each, el manejo de metadatos enfocado a bases de
datos argumentos variables(varargs) entre los cambios más relevantes.

Las versiones que siguen dejaron de lado el “.0” y pasaron a llamarse Java 6, Java 7 y el último
Java 8 liberado en marzo del 2014. Quizás lo más relevante de este ciclo es que Sun en noviembre
de 2006 entregó gran parte del código núcleo de Java como código libre, por esta razón, múltiples
empresas han suscrito al desarrollo de openJDK. También cabe destacar que durante este periodo
gran parte del enfoque llevó a corregir vulnerabilidades, tanto así que pese al compromiso de
Oracle de entregar una nueva versión cada dos años tuvo que postergar la entrega de Java 8
buscando robustecer el motor de seguridad de Java.

2.1. LENGUAJE DE PROGRAMACIÓN MULTIPLATAFORMA


Para conseguir el objetivo de "escribir una vez,
ejecutar en cualquier lugar", se diseñó una
arquitectura la que independientemente del sistema Java Bytecode
operativo, el código escrito pudiese ser ejecutado.
Para esto lo principal es la capa conocida con la
Máquina Virtual de Java, referida en toda la JVM
literatura como la JVM por su sigla en inglés, de
estas hay múltiples implementaciones tanto
Windows Linux OS X Solaris
propietarias como de uso libre, la cual se encarga de
interpretar el código intermedio compilado
bytecode y traducirlo a código nativo de cada
Sistema Operativo quien a su vez lo corren en cada
Figura 2
arquitectura. Fuente: material elaborado para el curso.

Producto de esto ciertas adaptaciones tienen que tomarse para no depender de un programa o
aspectos específicos de una plataforma para generar la aplicación, por eso Java contiene librerías
independientes para el manejo de gráficos, despliegues de ventanas, acceso a base de datos, esto
le permite que gran parte del código sea una plataforma independiente.

7
ESTE DOCUMENTO CONTIENE LA SEMANA 1
2.2. JAVA Y LA POO
La programación orientada a objeto, tiene por finalidad organizar los datos de forma natural
facilitando el entendimiento, dado que los objetos son más parecidos a una abstracción del
mundo real.

Otro beneficio es que permite, mantener programas de alta complejidad de manera simple, dado
que el encapsulamiento de objetos evita que errores (bugs) se propaguen fuera del objeto, como
desventaja su uso requiere más definiciones y por en ende para aplicaciones pequeñas la
complejidad se incrementa.

En Java los objetos son entidades únicas que contienen variables y operaciones, análogamente un
Automóvil puede ser un ejemplo de entidad.

Por ejemplo, el caso de un automóvil sus Automóvil


atributos lo hacen único y es lo que serán sus
variables: fabricante, modelo, color, puertas, Variable:
año, tipo de motor. Pero cilindrada no podría •Fabricante
ser una variable pese a que es común a •Modelo
muchos, dado que existen autos eléctricos que •Color
•Año
no lo poseen.
•Puertas
• Tipo de motor
Un ejemplo de las posibles operaciones puedes
tener “Cálculo de cantidad de puerta” teniendo
Operaciones
como variables de entrada fabricante y modelo
•Cálculo de cantidad de puerta
y retornaría un número entero.

Figura 3
Fuente: material elaborado para el curso.

De manera tal que el resto de los elementos del programa se comunican con el objeto a través de
las operaciones de manera similar al mundo real, donde si alguien quiere saber algo sobre mi
persona debe interactuar, indagar y consultar.

Otros aspectos de Java como la Herencia de clases y el tipo de variables serán cubiertos en mayor
detalle en capítulos posteriores.

8
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Objeto
Datos

Métodos Resto del


Programa
Figura 4
Fuente: material elaborado para el curso.

2.3. JAVA COMO LENGUAJE DE ALTO NIVEL


Los lenguajes de programación son el código que un compilador traduce a código de máquina para
convertirse en programas que se puedan ejecutar, mientras más compleja es la abstracción del
lenguaje más alto es el nivel y al contrario mientras más similar al código de máquina más bajo es
su nivel, siendo assembler la más baja abstracción en lenguajes de programación para pasar a
lenguajes de alto nivel como C++, Python o Java.

Java como lenguaje de alto nivel usa palabras similares al léxico del desarrollador en este caso
inglés, dado que las computadoras no entienden directamente los programas fuentes escritos en
alto nivel, estos deben ser compilados para que se conviertan en archivos ejecutables, en caso de
Java, esto implica enlazar el código con las distintas librerías para generar el ya mencionado código
intermedio bytecode el cual posteriormente es ejecutado por la JVM.

2.4. LA PLATAFORMA JAVA


Siendo Java un lenguaje de propósito general, la plataforma Java es un cúmulo de librerías, clases,
códigos reutilizables que sumados a estándar de gestión, calidad y seguridad buscan ser una
alternativa completa para desarrollar cualquier tipo de Software.

Esta plataforma permite crear tantas aplicaciones cliente como servidor, aplicaciones web, de
cliente ligero y de escritorio.

Desde la segunda versión de Java la plataforma se dividió de manera de apuntar al tipo de uso,
generando:

9
ESTE DOCUMENTO CONTIENE LA SEMANA 1
JavaEE: para ambiente de servidores corporativos que busca certificar estándares de calidad,
seguridad y estabilidad en el tiempo, para que las empresas puedan asegurar la continuidad del
servicio, y que sus aplicaciones no mueran con el cambio de versión, esta distribución en la
actualidad está orientada principalmente a servidores web.

JavaSE: es la edición estándar de uso general, permite desarrollar aplicaciones tanto de escritorio
como de ambientes de servidores.

JavaME: es la edición micro que busca dar servicio a dispositivos móviles o sistemas integrados
(embedded) que no limitan la cantidad de opciones en pos de obtener un alto rendimiento a un
código compacto.

3. JVM (MÁQUINA VIRTUAL DE JAVA)


Para conseguir el objetivo de "escribir una vez, ejecutar en cualquier lugar", se diseñó una
arquitectura, la que independientemente del sistema operativo del código escrito pudiese ser
ejecutada. Para esto, lo principal es la capa conocida como la Máquina Virtual de Java, referida en
toda la literatura como la JVM por su sigla en inglés.

Existen múltiples interpretadores de bytecode, el más usado HotSpot, motor actual de la


distribución oficial de Java, actualmente utilizado por Oracle, pero como mencionamos antes
existen alternativas de código abierto como Azul Zulu, motor de openJDK entre otras.

En definitiva, esta es la pieza fundamental que le permite a Java lograr su potencial de portabilidad
y aquí es donde se realizan las tareas de traducir, compilado en tiempo real JIT y recolección de
basura GC (garbage collector) que le permiten a la máquina virtual cumplir con las expectativas de
desempeño.

Figura 5
Fuente: material elaborado para el curso.

10
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Cargadores de
Archivos de Clases
Clases

Área de Ejecución

Área Memoria Hilos Registros PC Registros de


Métodos Métodos Nativos

Motor de Ejecución
Métodos Nativos Librerías Nativas
JIT GC

Figura 6
Fuente: material elaborado para el curso.

4. BYTECODE
La compilación produce un archivo que contiene un lenguaje intermedio optimizado llamado
Bytecode, que contiene tanto código de máquina como de objeto, el cual se ejecuta en la máquina
virtual, la que recurre a las librerías de la plataforma para generar el ejecutable en tiempo real,
siendo esta combinación la que le permite lograr su gran portabilidad, permitiendo a un amplio
código ejecutarse en distintos ambientes y hasta en múltiples navegadores web (Firefox, Chrome,
Explorer, Safari, entre otros).

La estructura del Bytecode es similar a lenguajes de bajo nivel como assembler, pero adaptada a la
estructura de objeto, que no es propia del lenguaje de máquina, por ende es capaz de generar
aplicaciones dinámicas a diferencia de assembler. Hubo algunos intentos de desarrollar
procesadores que ejecutan Bytecode directo en el procesador, tal es el caso de Jazelle, mas no han
prosperado.

11
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Figura 7
Fuente: material elaborado para el curso.

5. JDK: KIT DE DESARROLLO DE JAVA


Para comenzar a desarrollar en Java lo esencial es instalar el kit de desarrollo desde un punto de
vista general. El cual está compuesto de JVM y las librerías básicas, lo que usualmente se conoce
como el JRE (ambiente de ejecución de Java), a esto se le agregan las herramientas de depuración
y compilación, destinados a interpretar el código fuente escrito en Java.

Dentro de las herramientas que constituye el JDK se incluyen aplicaciones para:

 Compilar código fuente de Java: Javac.


 Máquina específicas (aplicación no portable): javah, jrunscript.
 Desarrollo distribuido: idlj, wsimport.
 Seguridad: jarsigner, keytool, policytool.
 Documentar de aplicaciones: javadoc.
 De depuración: extcheck, JConsole, jdb, jps, jhat, jinfo, jmap, jmc, stack, jstat.

12
ESTE DOCUMENTO CONTIENE LA SEMANA 1
 Empaquetado y distribución jar, javafxpackager, jabswitch, jarsigner, pack200.
 Para navegadores web: appletviewer, javaws.

6. IDE DE PROGRAMACIÓN
Un IDE o ambiente de desarrollo integrado, es una aplicación que en este caso saca el máximo
provecho de las herramientas del JDK a las que se suma un potente editor. Esto le permite al
usuario gestionar y dividir de manera coherente la estructura de código fuente, facilitando la
fabricación y depuración de un programa, por ejemplo, algunos IDE módulos específicos para la
construcción de interfaz de usuario o reportes, otras se enfocan más en la facilidad de uso y la
representación de los datos orientada a objetos.

Java tiene más de un IDE dada la popularidad de este lenguaje, entre los más utilizados se
encuentra Eclipse, BlueJ o NetBeans.

6.1. ECLIPSE
La última versión disponible es 4.4 con soporte para Java 8, Eclipse es un proyecto que no solo da
soporte a Java si no que a otros lenguajes de alto nivel como Ruby, Php, Perl, C++ entre los más
renombrados. Eclipse esta escrito en Java por ende es multiplataforma y dispone de herramientas
para aprovechar la total capacidad de Java como ambiente de desarrollo.

13
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Figura 8
Fuente: material elaborado para el curso.

6.2. BLUEJ
De igual manera BlueJ está escrito en Java y es multiplataforma, pero su enfoque esta
principalmente orientado a la facilidad de uso y aplicación por lo que es considerado el ambiente
ideal para el aprendizaje.

14
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Figura 9
Fuente: material elaborado para el curso.

15
ESTE DOCUMENTO CONTIENE LA SEMANA 1
6.3. NETBEANS
Editor popular propiedad de Oracle luego de adquirir a Sun que si bien realiza funciones similares
a Eclipse, soportando múltiples lenguajes y teniendo buena orientación al desarrollo de
aplicaciones corporativas, NetBeans es un proyecto comunitario, razón por la cual algunos
prefieren Eclipse.

Figura 10
Fuente: material elaborado para el curso.

16
ESTE DOCUMENTO CONTIENE LA SEMANA 1
COMENTARIO FINAL
Java es más que un lenguaje de programación, fue en su momento un cambio en el paradigma de
desarrollo y se ha convertido en una plataforma robusta y popular entre desarrolladores, capaz de
producir aplicaciones para todo tipo de dispositivos.

Con una estructura que le permite correr en variadas plataformas y a pesar de su éxito estuvo a
punto de desaparecer tras un comienzo mal orientado. La aplicación de conceptos para la
abstracción de objetos le permitió atacar problemas de alta complejidad, permitiendo la
colaboración entre distinto desarrolladores.

Sun acertó al hacer de esta una plataforma de libre acceso lo que para aquella época era i
impensable y de hecho esta fue la principal razón que llevo a Oracle a adquirir Sun, dado que
todos sus productos hacían uso de Java en un alto porcentaje, esto por la calidad del producto
final y la capacidad de ser plataforma independiente, parte de los principios que fundan su
desarrollo.

Esta visión de propietaria y libre, o colaborativa y lucro, le ha permitido transformarse en el


estándar de aplicaciones corporativas y ser la fuerza predominante en el mundo móvil (Android),
con múltiples ambientes de desarrollo, los que apuntan a potenciar los aspectos más relevantes
para cada equipo, donde Eclipse apunta a ser la comunidad, BlueJ tiene por objeto ser
compresible y NetBeans apunta a ser compacto y orientado al desarrollo de aplicaciones
corporativas.

17
ESTE DOCUMENTO CONTIENE LA SEMANA 1
REFERENCIAS
Dean, J. & Dean R. (2009). Introducción a la Programación en Java. Editorial Mc Graw Hill. México.

Joyanes, L. (2011). Programación en Java 6. Editorial Mc Graw Hill. México

PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE:

IACC (2015). Java. Programación Orientada a Objetos I. Semana 1.

18
ESTE DOCUMENTO CONTIENE LA SEMANA 1
19
ESTE DOCUMENTO CONTIENE LA SEMANA 1

También podría gustarte