You are on page 1of 26

Introduccin a la programacin.

1.- Introduccin.
Cuntas acciones de las que has realizado hoy, crees que estn relacionadas con la
programacin?
Hagamos un repaso de los primeros instantes del da: te ha despertado la alarma de tu
telfono mvil o radio-despertador, has preparado el desayuno utilizando el microondas,
mientras desayunabas has visto u odo las ltimas noticias a travs de tu receptor de
televisin digital terrestre, te has vestido y puede que hayas utilizado el ascensor para
bajar al portal y salir a la calle, etc. Quiz no es necesario que continuemos ms para
darnos cuenta de que casi todo lo que nos rodea, en alguna medida, est relacionado con
la programacin, los programas y el tratamiento de algn tipo de informacin.
El volumen de datos que actualmente manejamos y sus innumerables posibilidades de
tratamiento constituyen un vasto territorio en el que los programadores tienen mucho
que decir.
En esta primera unidad realizaremos un recorrido por los conceptos fundamentales de la
programacin de aplicaciones. Iniciaremos nuestro camino conociendo con qu vamos a
trabajar, qu tcnicas podemos emplear y qu es lo que pretendemos conseguir.
Continuando con el anlisis de las diferentes formas de programacin existentes,
identificaremos qu fases conforman el desarrollo de un programa, avanzaremos
detallando las caractersticas relevantes de cada uno de los lenguajes de programacin
disponibles, para posteriormente, realizar una visin general del lenguaje de
programacin Java. Finalmente, tendremos la oportunidad de conocer con qu
herramientas podramos desarrollar nuestros programas, escogiendo entre una de ellas
para ponernos manos a la obra, utilizando el lenguaje Java.

2.- Programas y programacin.


2.1.- Buscando una solucin.
Generalmente, la primera razn que mueve a una persona hacia el aprendizaje de la
programacin es utilizar el ordenador como herramienta para resolver problemas
concretos. Como en la vida real, la bsqueda y obtencin de una solucin a un problema
determinado, utilizando medios informticos, se lleva a cabo siguiendo unos pasos
fundamentales. En la siguiente tabla podemos ver estas analogas.
Resolucin de problemas
En la vida real...
Observacin
de
la
situacin
problema.

Pensamos en una o varias posibles


soluciones.
Aplicamos la solucin que estimamos
ms adecuada.

En Programacin...
Anlisis del problema: requiere que el
problema sea definido y comprendido
claramente para que pueda ser analizado
con todo detalle.
Diseo o desarrollo de algoritmos:
procedimiento
paso
a
paso
para
solucionar el problema dado.
Resolucin del algoritmo elegido en la
computadora: consiste en convertir el
algoritmo en programa, ejecutarlo y
comprobar que soluciona verdaderamente
el problema.

Qu virtudes debera tener nuestra solucin?


Correccin y eficacia: si resuelve el problema adecuadamente
Eficiencia: si lo hace en un tiempo mnimo y con un uso ptimo de los recursos del
sistema.
Para conseguirlo, cuando afrontemos la construccin de la solucin tendremos que tener
en cuenta los siguientes conceptos:

Tema 12

1. Abstraccin: se trata de realizar un anlisis del problema para descomponerlo en


problemas ms pequeos y de menor complejidad, describiendo cada uno de ellos
de manera precisa. Divide y vencers, esta suele ser considerada una filosofa
general para resolver problemas y de aqu que su nombre no slo forme parte del
vocabulario informtico, sino que tambin se utiliza en muchos otros mbitos.
2. Encapsulacin: consiste en ocultar la informacin para poder implementarla de
diferentes maneras sin que esto influya en el resto de elementos.
3. Modularidad: estructuraremos cada parte en mdulos independientes, cada uno
de ellos tendr su funcin correspondiente.

Citas para pensar


El comienzo de la sabidura para un ingeniero de software es
reconocer la diferencia entre hacer que un programa funcione y
conseguir que lo haga correctamente.
Roger Pressman
2.2.- Algoritmos y programas.
Despus de analizar en detalle el problema a solucionar, hemos de disear y desarrollar
el algoritmo adecuado. Pero, qu es un algoritmo?

Algoritmo: secuencia ordenada de pasos, descrita sin ambigedades,


que conducen a la solucin de un problema dado.
Los algoritmos son independientes de los lenguajes de programacin y de las
computadoras donde se ejecutan. Un mismo algoritmo puede ser expresado en diferentes
lenguajes de programacin y podra ser ejecutado en diferentes dispositivos. Piensa en
una receta de cocina, sta puede ser expresada en castellano, ingls o francs, podra ser
cocinada en fogn o vitrocermica, por un cocinero o ms, etc. Pero independientemente
de todas estas circunstancias, el plato se preparar siguiendo los mismos pasos.
La diferencia fundamental entre algoritmo y programa es que, en el segundo, los pasos
que permiten resolver el problema, deben escribirse en un determinado lenguaje de
programacin para que puedan ser ejecutados en el ordenador y as obtener la
solucin.
Los lenguajes de programacin son slo un medio para expresar el algoritmo y el
ordenador un procesador para ejecutarlo. El diseo de los algoritmos ser una tarea que
necesitar de la creatividad y conocimientos de las tcnicas de programacin. Estilos
distintos, de distintos programadores a la hora de obtener la solucin del problema, darn
lugar a algoritmos diferentes, igualmente vlidos.
En esencia, todo problema se puede describir por medio de un algoritmo y las
caractersticas fundamentales que stos deben cumplir son:
Debe ser preciso e indicar el orden de realizacin paso a paso.
Debe estar bien definido, si se ejecuta dos o ms veces, debe obtener el mismo
resultado cada vez.
Debe ser finito, debe tener un nmero finito de pasos.
Pero cuando los problemas son complejos, es necesario descomponer stos en
subproblemas ms simples y, a su vez, en otros ms pequeos. Estas estrategias reciben
el nombre de diseo descendente o diseo modular (top-downdesign). Este
sistema se basa en el lema divide y vencers.
Para representar grficamente los algoritmos que vamos a disear, tenemos a nuestra
disposicin diferentes herramientas que ayudarn a describir su comportamiento de una
forma precisa y genrica, para luego poder codificarlos con el lenguaje que nos interese.
Entre otras tenemos:
Diagramas de flujo: esta tcnica utiliza smbolos grficos para la representacin
del algoritmo. Suele utilizarse en las fases de anlisis.

Tema 13

Pseudocdigo: esta tcnica se basa en el uso de palabras clave en lenguaje


natural, constantes, variables, otros objetos, instrucciones y estructuras de
programacin que expresan de forma escrita la solucin del problema. Es la
tcnica ms utilizada actualmente.
Tablas de decisin: En una tabla son representadas las posibles condiciones del
problema con sus respectivas acciones. Suele ser una tcnica de apoyo al
pseudocdigo cuando existen situaciones condicionales complejas.

Debes conocer
A continuacin te ofrecemos dos enlaces muy interesantes:
En el primer vdeo puedes ver los elementos grficos fundamentales que se
utilizan
para
la
generacin
de
diagramas
de
flujo.http://www.youtube.com/watch?v=tMEscFCEP0g
En el segundo vdeo se realiza la construccin de un diagrama de flujo con una
herramienta
grfica
y
su
transformacin
a
pseudocdigo.http://www.youtube.com/watch?v=PWgVXuQKrdo

3.- Paradigmas de la programacin.


Cuntas formas existen de hacer las cosas?
Supongo que estars pensando: varias o incluso, muchas.
Pero cuando se establece un patrn para la creacin de aplicaciones nos estamos
acercando al significado de la palabra paradigma.

Paradigma de programacin: Es un modelo bsico para el


diseo y la implementacin de programas. Este modelo
determinar cmo ser el proceso de diseo y la estructura final
del programa.

El paradigma representa un enfoque particular o filosofa para la construccin


de software. Cada uno tendr sus ventajas e inconvenientes, ser ms o menos
apropiado, pero no es correcto decir que exista uno mejor que los dems.
Resumen de los diferentes paradigmas de programacin:
Programacin Declarativa: se considera opuesta a la programacin
imperativa, se basa en el desarrollo de programas realizando una especificacin
o declaracin de un conjunto de condiciones, proposiciones, afirmaciones,
restricciones y transformaciones que describen el problema y detallan su
solucin. Las sentencias que se utilizan, lo que hacen es describir el problema
que se quiere solucionar, pero no las instrucciones necesarias para llevarlo a
cabo.
Dentro de este paradigma pueden destacarse la programacin funcional y la
programacin lgica.
El lenguaje SQL est basado en este paradigma
Programacin Funcional: Considera al programa como una funcin
matemtica, donde el dominio representara el conjunto de todas las entradas
posibles (imputs) y el rango sera el conjunto de todas las salidas posibles
(outputs). La forma en que funciona puede ser entendida como una caja negra,
esta tiene una serie de entradas, un procesamiento interno y una salida.
No existe el concepto de variable, adems el funcionamiento de cada funcin es
independiente del resto.
El lenguaje LISP es un ejemplo de este paradigma de programacin.
Programacin Lgica: En este paradigma, se especifica que hacer y no como
hacerlo. Se utiliza en Inteligencia artificial.
El lenguaje Prolog es un ejemplo claro que se ajusta a este paradigma.
Programacin Imperativa: Consiste en una serie de comandos que una
computadora ejecutar. Estos comandos detallan de forma clara y especfica el
cmo hacer las cosas y llevarn al programa de datos, expresiones y estructuras
de control de flujo del programa.

Tema 14

Programacin Convencional: Tambin llamada, no estructurada, no existan


en los lenguajes de programacin iniciales herramientas que permitieran
estructurar el cdigo para su modificacin o reutilizacin. Los programas eran
lneas y lneas de cdigo que hacan difcil su lectura o modificacin. Todo estaba
basado en instrucciones de salto (Goto) que modificaban el flujo del programa.
Un programa era un nico archivo, eran difciles de mantener y difciles de
representar.
Programacin estructurada: Naci para solventar los problemas y
limitaciones de la programacin convencional. Permite utilizar estructuras que
facilitan la modificacin, reutilizacin y lectura del cdigo. Permite el uso del
concepto de funcin (programacin modular), que agrupan cdigo para la
realizacin de una determinada tarea. Estas funciones pueden ser utilizadas en
cualquier parte del programa el nmero de veces que se necesiten.
Permite una representacin ms clara del funcionamiento de los programas
mediante diagramas.
Programacin Orientada a Objetos: el mundo se ve desde el punto de vista
de los objetos que hay en l. Los objetos tienen caractersticas (propiedades) y
con ellos pueden realizarse acciones (mtodos). En esta filosofa se busca
encontrar los objetos, en vez de las funciones como en programacin
estructurada.
Est basada en varias tcnicas, incluyendo herencia, abstraccin, polimorfismo y
encapsulamiento.
Lenguajes como Java,C++ (influenciado por C, P. Estructurada), PHP, son
claros ejemplos que se basan en este paradigma.
Visual, orientada a aspectos, orientada a eventos, : Son un conjunto de
paradigmas que pueden ser relevantes, aunque gran parte de ellos, incluyen los
conceptos desarrollados en el resto de paradigmas presentados en este
documento.

Como habrs podido apreciar, existen mltiples paradigmas, incluso puede haber
lenguajes de programacin que no se clasifiquen nicamente dentro de uno de ellos.
Un lenguaje como Smalltalk es un lenguaje basado en el paradigma orientado a
objetos. El lenguaje de programacin Scheme, en cambio, soporta slo
programacin funcional. Python, soporta mltiples paradigmas.

Para saber ms
Te proponemos el siguiente enlace en el que encontrars
informacin adicional sobre los diferentes paradigmas de
programacin.
Paradigmas de programacin y lenguajes
Cul es el objetivo que se busca con la aplicacin de los diferentes enfoques?
Fundamentalmente:
reducir la dificultad para el mantenimiento de las aplicaciones,
mejorar el rendimiento del programador y, en general,
mejorar la productividad y calidad de los programas.

4.- Fases de la programacin.


Sea cual sea el estilo que escojamos a la hora de automatizar una determinada tarea,
debemos realizar el proceso aplicando un mtodo a nuestro trabajo. Es decir, sabemos
que vamos a dar solucin a un problema, aplicando una filosofa de desarrollo y lo
haremos dando una serie de pasos que deben estar bien definidos.
El proceso de creacin de software puede dividirse en diferentes fases:
Fase de resolucin del problema.

Tema 15

Fase de implementacin.
Fase de explotacin y mantenimiento.
A continuacin, analizaremos cada una de ellas.

4.1.- Resolucin del problema.


Para el comienzo de esta fase, es necesario que el problema sea definido y comprendido
claramente para que pueda ser analizado con todo detalle. A su vez, la fase de resolucin
del problema puede dividirse en dos etapas:
a. Anlisis.
Por lo general, el anlisis indicar la especificacin de requisitos que se deben cubrir. Los
contactos entre el analista/programador y el cliente/usuario sern numerosos, de esta
forma podrn ser conocidas todas las necesidades que precisa la aplicacin. Se
especificarn los procesos y estructuras de datos que se van a emplear. La creacin de
prototipos ser muy til para saber con mayor exactitud los puntos a tratar.
El anlisis inicial ofrecer una idea general de lo que se solicita, realizando
posteriormente sucesivos refinamientos que servirn para dar respuesta a las siguientes
cuestiones:
Cul es la informacin que ofrecer la resolucin del problema? La
respuesta a esta primera pregunta se identifica con los resultados deseados o las
salidas del problema.
Qu datos son necesarios para resolver el problema? La respuesta a esta
segunda pregunta indicar qu datos se proporcionan o las entradas del problema.
En esta fase debemos aprender a analizar la documentacin de la empresa, investigar,
observar todo lo que rodea al problema y recopilar cualquier informacin til.
Ejercicio resuelto
Vamos a ilustrar esta fase realizando el anlisis del siguiente problema:
Leer el radio de un crculo y calcular e imprimir su superficie y circunferencia.
Est claro que las entradas de datos en este problema se reducen al radio del crculo,
pero piensa qu salidas de datos ofrecer la solucin?
Las salidas sern...
Variable de salida SUPERFICIE: ser la superficie del crculo. (Te acuerdas? El
nmero Pi () por el radio al cuadrado).
Variable de salida CIRCUNFERENCIA: ser la longitud de la circunferencia del
crculo. (Y de sta? 2 por el nmero y por el radio)
Y la entrada...
Variable RADIO: ser el radio del crculo.
Estas variables RADIO, SUPERFICIE y CIRCUNFERENCIA podrn ser de tipo real
(nmeros con parte entera y parte decimal, por ejemplo: 3,57).
b. Diseo.
En esta etapa se convierte la especificacin realizada en la fase de anlisis en un diseo
ms detallado, indicando el comportamiento o la secuencia lgica de instrucciones capaz
de resolver el problema planteado. Estos pasos sucesivos, que indican las instrucciones a
ejecutar por la mquina, constituyen lo que conocemos como algoritmo.
Consiste en plantear la aplicacin como una nica operacin global, e ir
descomponindola en operaciones ms sencillas, detalladas y especficas. En cada nivel
de refinamiento, las operaciones identificadas se asignan a mdulos separados.
Hay que tener en cuenta que antes de pasar a la implementacin del algoritmo, hemos
de asegurarnos que tenemos una solucin adecuada. Para ello, todo diseo requerir de
la realizacin de la prueba o traza del programa. Este proceso consistir en un
seguimiento paso a paso de las instrucciones del algoritmo utilizando datos concretos. Si
la solucin aportada tiene errores, tendremos que volver a la fase de anlisis para realizar
las modificaciones necesarias o tomar un nuevo camino para la solucin. Slo cuando el
algoritmo cumpla los requisitos y objetivos especificados en la fase de anlisis se pasar
a la fase de implementacin.

Tema 16

4.2.- Implementacin.
Si la fase de resolucin del problema requiere un especial cuidado en la realizacin del
anlisis y el posterior diseo de la solucin, la fase de implementacin cobra tambin una
especial relevancia. Llevar a la realidad nuestro algoritmo implicar cubrir algunas etapas
ms que se detallan a continuacin.
a. Codificacin o construccin.
Esta etapa consiste en transformar o traducir los resultados obtenidos a un determinado
lenguaje de programacin. Para comprobar la calidad y estabilidad de la aplicacin se han
de realizar una serie de pruebas que comprueben las funciones de cada mdulo
(pruebas unitarias), que los mdulos funcionan bien entre ellos (pruebas de
interconexin) y que todos funcionan en conjunto correctamente (pruebas de
integracin).
Cuando realizamos la traduccin del algoritmo al lenguaje de programacin debemos
tener en cuenta las reglas gramaticales y la sintaxis de dicho lenguaje. Obtendremos
entonces el cdigo fuente, lo que normalmente conocemos por programa.
Pero para que nuestro programa comience a funcionar, antes debe ser traducido a un
lenguaje que la mquina entienda. Este proceso de traduccin puede hacerse de dos
formas, compilando o interpretando el cdigo fuente del programa.

Compilacin: es el proceso por el cual se traducen las instrucciones


escritas en un determinado lenguaje de programacin a lenguaje que la
mquina es capaz de interpretar.
Compilador: programa informtico que realiza la traduccin. Recibe el
cdigo fuente, realiza un anlisis lexicogrfico, semntico y sintctico,
genera un cdigo intermedio no optimizado, optimiza dicho cdigo y
finalmente, genera el cdigo objeto para una plataforma especfica.
Intrprete: programa informtico capaz de analizar y ejecutar otros
programas, escritos en un lenguaje de alto nivel. Los intrpretes se
diferencian de los compiladores en que mientras estos traducen un
programa desde su descripcin en un lenguaje de programacin al
cdigo de mquina del sistema, los intrpretes slo realizan la
traduccin a medida que sea necesaria, tpicamente, instruccin por
instruccin, y normalmente no guardan el resultado de dicha traduccin.
Una vez traducido, sea a travs de un proceso de compilacin o de interpretacin, el
programa podr ser ejecutado.
b. Prueba de ejecucin y validacin.
Para esta etapa es necesario implantar la aplicacin en el sistema donde va a funcionar,
debe ponerse en marcha y comprobar si su funcionamiento es correcto. Utilizando
diferentes datos de prueba se ver si el programa responde a los requerimientos
especificados, si se detectan nuevos errores, si stos son bien gestionados y si la interfaz
es amigable. Se trata de poner a prueba nuestro programa para ver su respuesta en
situaciones difciles.
Mientras se detecten errores y stos no se subsanen no podremos avanzar a la siguiente
fase. Una vez corregido el programa y testeado se documentar mediante:
Documentacin interna: encabezados, descripciones, declaraciones del
problema y comentarios que se incluyen dentro del cdigo fuente.
Documentacin externa: son los manuales que se crean para una mejor
ejecucin y utilizacin del programa, as como algunos tipos de diagramas que
ayudan a comprender mejor la "arquitectura" de nuestra solucin, como pueden
ser los diagramas de flujo, diagramas de clases, etc.

4.3.- Explotacin.
Cuando el programa ya est instalado en el sistema y est siendo de utilidad para los
usuarios, decimos que se encuentra en fase de explotacin.

Tema 17

Peridicamente ser necesario realizar evaluaciones y, si es necesario, llevar a cabo


modificaciones para que el programa se adapte o actualice a nuevas necesidades,
pudiendo tambin corregirse errores no detectados anteriormente. Este proceso recibe el
nombre de mantenimiento del software.

Mantenimiento del software: es el proceso de mejora y optimizacin


del software despus de su entrega al usuario final. Involucra cambios
al software en orden de corregir defectos y dependencias encontradas
durante su uso, as como la adicin de nuevas funcionalidades para
mejorar su usabilidad y su aplicabilidad.
Ser imprescindible aadir una documentacin adecuada que facilite al programador o a
la programadora la comprensin, uso y modificacin de dichos programas.

5.- Ciclo de vida del software.


El proceso de desarrollo puede involucrar siempre las siguientes etapas mnimas:
Especificacin y Anlisis de requisitos.
Diseo.
Codificacin.
Pruebas.
Instalacin y paso a Produccin.
Mantenimiento.
Existen varios tipos de ciclos de vida del software, a continuacin te mostramos un
resumen de los ms importantes.

Modelo en cascada: Es tambin conocido por modelo clsico,modelo tradicional


o modelo lineal secuencial. Para comenzar una fase ha de finalizarse la anterior. Es
rgido y en la prctica presenta algunos problemas de aplicacin. Es el ms
utilizado por su escasa complejidad.
Definicin de requerimientos> Anlisis y Diseo del software >
Implementacin y prueba de unidades > Integracin y prueba del
sistema > Operacin y Mantenimiento

Modelo por prototipos: Este ciclo de vida se basa en la creacin de prototipos


que irn mejorando el conocimiento del problema, tanto para el usuario como
para los desarrolladores.
La fase de especificacin de requerimientos est compuesta por las siguientes
subfases:
Pequeo anlisis y especificacin
Diseo y realizacin
Evaluacin
Modificacin
Finalizacin de los requerimientos

Modelo Evolutivo: Se emplea para facilitar la creacin de aplicaciones flexibles y


escalables, que permitan incorporar modificaciones muy rpidamente una vez que
se finalice su desarrollo.
Este modelo permite adaptarse a requisitos que varen en el tiempo. Es un modelo
iterativo, permiten desarrollar versiones cada vez ms completas y complejas,
hasta llegar al objetivo final deseado; incluso evolucionar ms all, durante la fase
de explotacin.
Los modelos iterativo incremental y espiral son del tipo evolutivo.

Modelo incremental: El funcionamiento del modelo incremental permite la


entrega de versiones parciales a medida que se va construyendo el producto final.

Tema 18

Por ejemplo, un procesador de texto podra incluir inicialmente funciones bsicas.


En un incremento posterior podra incorporar funciones para previsualizacin y
paginacin. En los siguientes incrementos podra disponer de funciones de
correccin ortogrfica, etc. Tas sucesivos incrementos lograramos obtener el
procesador de texto final.

Modelo en Espiral: Este modelo emplea lo mejor de los modelos convencional y


por prototipos. Est dividido en cuatro fases:
Planificacin
Anlisis de riesgo
Desarrollo
Evaluacin del cliente
El paso por cada una de estas fases se repetir tantas veces como sea necesario.

Tema 19

6.- Lenguajes de programacin.


Como hemos visto, en todo el proceso de resolucin de un problema mediante la creacin
de software, despus del anlisis del problema y del diseo del algoritmo que pueda
resolverlo, es necesario traducir ste a un lenguaje que exprese claramente cada uno de
los pasos a seguir para su correcta ejecucin. Este lenguaje recibe el nombre
de lenguaje de programacin.

Lenguaje de programacin: conjunto de reglas sintcticas y


semnticas, smbolos y palabras especiales establecidas para la
construccin de programas. Es un lenguaje artificial, una construccin
mental del ser humano para expresar programas.
Gramtica del lenguaje: reglas aplicables al conjunto de smbolos y
palabras especiales del lenguaje de programacin para la construccin
de sentencias correctas.
Lxico: es el conjunto finito de smbolos y palabras especiales, es el
vocabulario del lenguaje.
Sintaxis: son las posibles combinaciones de los smbolos y palabras
especiales. Est relacionada con la forma de los programas.
Semntica: es el significado de cada construccin del lenguaje, la
accin que se llevar a cabo.
Hay que tener en cuenta que pueden existir sentencias sintcticamente correctas, pero
semnticamente incorrectas. Por ejemplo, Un avestruz dio una tremenda dentellada a su
cuidador est bien construida sintcticamente, pero es evidente que semnticamente
no.
Una caracterstica relevante de los lenguajes de programacin es, precisamente, que ms
de un programador pueda usar un conjunto comn de instrucciones que sean
comprendidas entre ellos. A travs de este conjunto se puede lograr la construccin de
un programa de forma colaborativa.
Los lenguajes de programacin pueden ser clasificados en funcin de lo cerca que estn
del lenguaje humano o del lenguaje de los computadores. El lenguaje de los
computadores son cdigos binarios, es decir, secuencias de unos y ceros. Detallaremos
seguidamente las caractersticas principales de los lenguajes de programacin.

6.1.- Lenguaje mquina.


Este es el lenguaje utilizado directamente por el procesador, consta de un conjunto de
instrucciones codificadas en binario. Es el sistema de cdigos directamente interpretable
por un circuito microprogramable.
Este fue el primer lenguaje utilizado para la programacin de computadores. De hecho,
cada mquina tena su propio conjunto de instrucciones codificadas en ceros y unos.
Cuando un algoritmo est escrito en este tipo de lenguaje, decimos que est en cdigo
mquina.
Programar en este tipo de lenguaje presentaba los siguientes inconvenientes:
Cada programa era vlido slo para un tipo de procesador u ordenador.

La lectura o interpretacin de los programas era extremadamente


difcil y, por tanto, insertar modificaciones resultaba muy costoso.
Los programadores de la poca deban memorizar largas combinaciones de
ceros y unos, que equivalan a las instrucciones disponibles para los diferentes
tipos de procesadores.
Los programadores se encargaban de introducir los cdigos binarios en el
computador, lo que provocaba largos tiempos de preparacin y posibles
errores.

Tema 110

A continuacin, se muestran algunos cdigos binarios equivalentes a las operaciones de


suma, resta y movimiento de datos en lenguaje mquina.
Algunas operaciones
en lenguaje mquina
Operacin Lenguaje
mquina
Sumar
00101101
Restar
00010011
Mover
00111010

Dada la complejidad y dificultades que ofreca este lenguaje,


fue sustituido por otros ms sencillos y fciles utilizar. No
obstante, hay que tener en cuenta que todos los programas
para poder ser ejecutados, han de traducirse siempre al
lenguaje mquina que es el nico que entiende la
computadora.
Como recordatorio, te proponemos ver el siguiente vdeo sobre
cmo funciona el sistema binario.

6.2.- Lenguaje ensamblador.


La evolucin del lenguaje mquina fue el lenguaje ensamblador.
Las instrucciones ya no son secuencias binarias, se sustituyen por cdigos de operacin
que describen una operacin elemental del procesador. Es un lenguaje de bajo nivel, al
igual que el lenguaje mquina, ya que dependen directamente del hardware donde son
ejecutados.

Mnemotcnico: son palabras especiales, que sustituyen largas


secuencias de ceros y unos, utilizadas para referirse a diferentes
operaciones disponibles en el juego de instrucciones que soporta cada
mquina en particular.

En ensamblador, cada instruccin (mnemotcnico) se corresponde a una instruccin del


procesador. En la siguiente tabla se muestran algunos ejemplos.
Algunas operaciones
en
lenguaje
ensamblador
Operacin Lenguaje
ensambla
dor
Multiplicar MUL
Dividir
DIV
Mover
MOV
En el grfico anterior puedes ver parte de un programa escrito en lenguaje ensamblador.
En color rojo se ha resaltado el cdigo mquina en hexadecimal, en magenta el cdigo
escrito en ensamblador y en azul, las direcciones de memoria donde se encuentra el
cdigo.
Pero aunque ensamblador fue un intento por aproximar el lenguaje de los procesadores al
lenguaje humano, presentaba mltiples dificultades:
Los programas seguan dependiendo directamente del hardware que los
soportaba.
Los programadores tenan que conocer detalladamente la mquina sobre la
que programaban, ya que deban hacer un uso adecuado de los recursos de dichos
sistemas.
La lectura, interpretacin o modificacin de los programas segua
presentando dificultades.

Tema 111

Todo programa escrito en lenguaje ensamblador necesita de un intermediario, que realice


la traduccin de cada una de las instrucciones que componen su cdigo al lenguaje
mquina correspondiente. Este intermediario es el programa ensamblador. El
programa original escrito en lenguaje ensamblador constituye el cdigo fuente y el
programa traducido al lenguaje mquina se conoce como programa objeto que ser
directamente ejecutado por la computadora.

6.3.- Lenguajes compilados.


Para paliar los problemas derivados del uso del lenguaje ensamblador y con el objetivo de
acercar la programacin hacia el uso de un lenguaje ms cercano al humano que al del
computador, nacieron los lenguajes compilados.
Algunos ejemplos de este tipo de lenguajes son: Pascal, Fortran, Algol, C, C++, etc.
Al ser lenguajes ms cercanos al humano, tambin se les denomina lenguajes de alto
nivel. Son ms fciles de utilizar y comprender, las instrucciones que forman parte de
estos lenguajes utilizan palabras y signos reconocibles por el programador.
Cules son sus ventajas?
Son mucho ms fciles de aprender y de utilizar que sus predecesores.
Se reduce el tiempo para desarrollar programas, as como los costes.
Son independientes del hardware, los programas pueden ejecutarse en
diferentes tipos de mquina.
La lectura, interpretacin y modificacin de los programas es mucho ms
sencilla.
Pero un programa que est escrito en un lenguaje de alto nivel tambin tiene que
traducirse a un cdigo que pueda utilizar la mquina. Los programas traductores que
pueden realizar esta operacin se llaman compiladores.

Compilador: es un programa cuya funcin consiste en traducir el


cdigo fuente de un programa escrito en un lenguaje de alto nivel a
lenguaje mquina. Al proceso de traduccin se le conoce con el nombre
de compilacin.
El compilador realizar la traduccin y
adems informar de los posibles errores.
Una vez subsanados, se generar el
programa traducido a cdigo mquina,
conocido como cdigo objeto. Este
programa an no podr ser ejecutado
hasta que no se le aadan los mdulos de
enlace o bibliotecas, durante el proceso de
enlazado. Una vez finalizado el enlazado,
se obtiene el cdigo ejecutable.

6.4.- Lenguajes interpretados.

Tema 112

Recuerdas que en un apartado anterior ya hablamos de que existen dos formas de


traducir los programas escritos en un lenguaje de alto nivel a cdigo mquina y que una
de esas formas es mediante un intrprete?Pues bien, ahora vamos a
ver cules son las caractersticas de los lenguajes interpretados.
Se caracterizan por estar diseados para que su ejecucin se realice a travs de
un intrprete. Cada instruccin escrita en un lenguaje interpretado se analiza, traduce y
ejecuta tras haber sido verificada. Una vez realizado el proceso por el intrprete, la
instruccin se ejecuta, pero no se guarda en memoria.

Intrprete: es un programa traductor de un lenguaje de alto nivel en el


que el proceso de traduccin y de ejecucin se llevan a cabo
simultneamente, es decir, la instruccin se pasa a lenguaje mquina y
se ejecuta directamente. No se genera programa objeto, ni programa
ejecutable.
Los lenguajes interpretados generan programas de menor tamao que los generados por
un compilador, al no guardar el programa traducido a cdigo mquina. Pero presentan el
inconveniente de ser algo ms lentos, ya que han de ser traducidos durante su ejecucin.
Por otra parte, necesitan disponer en la mquina del programa intrprete ejecutndose,
algo que no es necesario en el caso de un programa compilado, para los que slo es
necesario tener el programa ejecutable para poder utilizarlo.
Ejemplos de lenguajes interpretados son: Perl, PHP, Python, JavaScript, etc.
A medio camino entre los lenguajes compilados y los interpretados, existen los lenguajes
que podemos denominar pseudo-compilados o pseudo-interpretados, es el caso
del Lenguaje Java. Java puede verse como compilado e interpretado a la vez, ya que su
cdigo fuente se compila para obtener el cdigo binario en forma de bytecodes, que son
estructuras parecidas a las instrucciones mquina, con la importante propiedad de no ser
dependientes de ningn tipo de mquina (se detallarn ms adelante). La Mquina
Virtual Java se encargar de interpretar este cdigo y, para su ejecucin, lo traducir a
cdigo mquina del procesador en particular sobre el que se est trabajando.
Puedes entender por qu Java es un lenguaje compilado e interpretado a travs del
esquema que se muestra en el siguiente enlace:El lenguaje Java es compilado e
interpretado.

7.- El lenguaje de programacin Java.


7.1.- Qu y cmo es Java?
Java es un lenguaje sencillo de aprender, con una sintaxis parecida a la de C++, pero en
la que se han eliminado elementos complicados y que pueden originar errores. Java es
orientado a objetos, con lo que elimina muchas preocupaciones al programador y permite
la utilizacin de gran cantidad de bibliotecas ya definidas, evitando reescribir cdigo que
ya existe. Es un lenguaje de programacin creado para satisfacer nuevas necesidades
que los lenguajes existentes hasta el momento no eran capaces de solventar.
Una de las principales virtudes de Java es su independencia del hardware, ya que el
cdigo que se genera es vlido para cualquier plataforma. Este cdigo ser ejecutado
sobre una mquina virtual denominada Mquina Virtual Java (MVJ o JVM Java Virtual
Machine), que interpretar el cdigo convirtindolo a cdigo especfico de la plataforma
que lo soporta. De este modo el programa se escribe una nica vez y puede hacerse
funcionar en cualquier lugar. Por eso, ese es el lema del lenguaje: Write once,
runeverywhere.
Antes de que apareciera Java, el lenguaje C era uno de los ms extendidos por su
versatilidad. Pero cuando los programas escritos en C aumentaban de volumen, su
manejo comenzaba a complicarse. Mediante las tcnicas de programacin estructurada y
programacin modular se conseguan reducir estas complicaciones, pero no era
suficiente.
Fue entonces cuando la Programacin Orientada a Objetos (POO) entra en escena,
aproximando notablemente la construccin de programas al pensamiento humano y

Tema 113

haciendo ms sencillo todo el proceso. Los problemas se dividen en objetos que tienen
propiedades e interactan con otros objetos, de este modo, el programador puede
centrarse en cada objeto para programar internamente los elementos y funciones que lo
componen.
Las caractersticas principales de lenguaje Java se resumen a continuacin:
El cdigo generado por el compilador Java es independiente de la arquitectura.
Est totalmente orientado a objetos.
Su sintaxis es similar a C y C++.
Es distribuido, preparado para aplicaciones TCP/IP.
Dispone de un amplio conjunto de bibliotecas.
Es robusto, realizando comprobaciones del cdigo en tiempo de compilacin y de
ejecucin.
La seguridad est garantizada, ya que las aplicaciones Java no acceden a zonas
delicadas de memoria o de sistema.
Caractersticas detalladas del lenguaje Java

7.2.- Breve historia.


Java surgi en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de
disear un nuevo lenguaje de programacin destinado a programar pequeos
dispositivos electrnicos. La dificultad de estos dispositivos es que cambian
continuamente y para que un programa funcione en el siguiente dispositivo aparecido,
hay que rescribir el cdigo.
Por eso la empresa Sun quera crear un
lenguaje independiente del dispositivo.
Pero no fue hasta 1995 cuando pas a llamarse Java, dndose a conocer al pblico como
lenguaje de programacin para computadores. Java pasa a ser un lenguaje totalmente
independiente de la plataforma y a la vez potente y orientado a objetos. Esa filosofa y su
facilidad para crear aplicaciones para redes TCP/IPha hecho que sea uno de los lenguajes
ms utilizados en la actualidad.
El factor determinante para su expansin fue la incorporacin de un intrprete Java en la
versin 2.0 del navegador Web Netscape Navigator, lo que supuso una gran revuelo en
Internet. A principios de 1997 apareci Java 1.1, que proporcion sustanciales mejoras al
lenguaje.
Java 1.2, ms tarde rebautizado como Java 2, naci a finales de 1998.
El principal objetivo del lenguaje Java es llegar a ser el nexo universal que conecte a los
usuarios con la informacin, est sta situada en el ordenador local, en un servidor Web,
en una base de datos o en cualquier otro lugar.
Para el desarrollo de programas en lenguaje Java es necesario utilizar un entorno de
desarrollo denominado JDK (Java Development Kit), que provee de un compilador y un
entorno de ejecucin (JRE Java RuntimeEnvironment) para los bytecodes generados a
partir del cdigo fuente. Al igual que las diferentes versiones del lenguaje han
incorporado mejoras, el entorno de desarrollo y ejecucin tambin ha sido mejorado
sucesivamente.
Java 2 es la tercera versin del lenguaje, pero es algo ms que un lenguaje de
programacin, incluye los siguientes elementos:
Un lenguaje de programacin: Java.
Un conjunto de bibliotecas estndar que vienen incluidas en la plataforma y que
son necesarias en todo entorno Java. Es el Java Core.
Un conjunto de herramientas para el desarrollo de programas, como es el
compilador de bytecodes, el generador de documentacin, un depurador, etc.
Un entorno de ejecucin que en definitiva es una mquina virtual que ejecuta los
programas traducidos a bytecodes.

Tema 114

El siguiente esquema muestra los elementos fundamentales de la plataforma de

desarrollo Java 2.
Actualmente hay tres ediciones de la plataforma Java 2:
J2SE: Entorno de Sun relacionado con la creacin de aplicaciones y applets en
lenguaje Java.
J2EE: Pensada para la creacin de aplicaciones Java empresariales y del lado del
servidor.
J2ME: Pensada para la creacin de aplicaciones Java para dispositivos mviles.
Ms informacin:
Los orgenes de Java
Historia de Java
Lnea de tiempo de la historia de Java

7.3.- La POO y Java.


En Java, los datos y el cdigo (funciones o mtodos) se combinan en entidades
llamadas objetos. El objeto tendr un comportamiento (su cdigo interno) y
un estado (los datos). Los objetos permiten la reutilizacin del cdigo y pueden
considerarse, en s mismos, como piezas reutilizables en mltiples proyectos distintos.
Esta caracterstica permite reducir el tiempo de desarrollo de software.
Por simplificar un poco las cosas, un programa en Java ser como una representacin
teatral en la que debemos preparar primero cada personaje, definir sus caractersticas y
qu va a saber hacer. Cuando esta fase est terminada, la obra se desarrollar sacando
personajes a escena y hacindoles interactuar.
Al emplear los conceptos de la Programacin Orientada a Objetos (POO), Java incorpora
las tres caractersticas propias de este paradigma:
encapsulaci;
herencia;
polimorfismo.
Los patrones o tipos de objetos se denominan clases y los objetos que utilizan estos
patrones o pertenecen a dichos tipos, se identifican con el nombre de instancias. Pero,
no hay que alarmarse, estos conceptos se vern ms adelante en sucesivas unidades.

Tema 115

Otro ejemplo para seguir aclarando


ideas, piensa en los bloques de
juegos de construccin. Suponemos
que conoces los cubos de plstico en
varios colores y tamaos. Por una de
sus caras disponen de pequeos
conectores circulares y en otra de sus
caras pequeos orificios en los que
pueden conectarse otros bloques, con
el objetivo principal de permitir
construir formas ms grandes. Si usas
diferentes piezas del lego puedes
construir
aviones,
coches,
edificios, etc. Si te fijas bien, cada
pieza es un objeto pequeo que
puede unirse con otros objetos para
crear objetos ms grandes.
Pues bien, aproximadamente as es
como funciona la programacin dirigida a objetos: unimos elementos pequeos para
construir otros ms grandes. Nuestros programas estarn formados por muchos
componentes (objetos) independientes y diferentes; cada uno con una funcin
determinada en nuestro software y que podr comunicarse con los dems de una manera
predefinida.

7.4.- Independencia de la plataforma y trabajo en red.


Existen dos caractersticas que distinguen a Java de otros lenguajes, como son
la independencia de la plataforma y la posibilidad de trabajar en red o, mejor, la
posibilidad de crear aplicaciones que trabajan en red.
Estas caractersticas las vamos a explicar a continuacin:
a. Independencia: los programas escritos en Java pueden ser ejecutados en
cualquier tipo de hardware. El cdigo fuente es compilado, generndose el cdigo
conocido como Java Bytecode (instrucciones mquina simplificadas que son
especficas de la plataforma Java), el bytecode ser interpretado y ejecutado en
la Mquina Virtual Java (MVJ o JVM Java Virtual Machine) que es un
programa escrito en cdigo nativo de la plataforma destino, entendible por
el hardware. Con esto se evita tener que realizar un programa diferente para
cada CPU (Unidad Central de Proceso) o plataforma.
Por tanto, la parte que realmente es dependiente del sistema es la Mquina
Virtual Java, as como las libreras o bibliotecas bsicas que permiten acceder
directamente al hardware de la mquina.
b. Trabajo en red: esta capacidad del lenguaje ofrece mltiples posibilidades para
la comunicacin va TCP/IP. Para poder hacerlo existen libreras que permiten el
acceso y la interaccin con protocolos como http, ftp, etc., facilitando al
programador las tareas del tratamiento de la informacin a travs de redes.

7.5.- Seguridad y simplicidad.


Junto a las caractersticas diferenciadoras del lenguaje Java relacionadas con la
independencia y el trabajo en red, han de destacarse dos virtudes que hacen a este
lenguaje uno de los ms extendidos entre la comunidad de programadores:
su seguridad y su simplicidad.
Seguridad: en primer lugar, los posibles accesos a zonas de memoria sensibles
que en otros lenguajes como C y C++ podan suponer peligros importantes, se
han eliminado en Java.
En segundo lugar, el cdigo Java es comprobado y verificado para evitar que
determinadas secciones del cdigo produzcan efectos no deseados. Los test que se

Tema 116

aplican garantizan que las operaciones, operandos, conversiones, uso de clases y dems
acciones son seguras.
Y en tercer lugar, Java no permite la apertura de ficheros en la mquina local, tampoco
permite ejecutar ninguna aplicacin nativa de una plataforma e impide que se utilicen
otros ordenadores como puente, es decir, nadie puede utilizar nuestra mquina para
hacer peticiones o realizar operaciones con otra.
En definitiva, podemos afirmar que Java es un lenguaje seguro.
Simplicidad: aunque Java es tan potente como C o C++, es bastante ms
sencillo. Posee una curva de aprendizaje muy rpida y, para alguien que
comienza a programar en este lenguaje, como ser el caso de la mayora de
quienes comienzan a estudiar este mdulo, le resulta relativamente fcil
comenzar a escribir aplicaciones interesantes.
Si has programado alguna vez en C o C++ encontrars que Java te pone las cosas ms
fciles, ya que se han eliminado: la aritmtica de punteros, los registros, la definicin de
tipos, la gestin de memoria, etc. Con esta simplificacin se reduce bastante la
posibilidad de cometer errores comunes en los programas. Un programador
experimentado en C o C++ puede cambiar a este lenguaje rpidamente y obtener
resultados en muy poco espacio de tiempo.
Muy relacionado con la simplicidad que aporta Java est la incorporacin de un elemento
muy til como es el Recolector de Basura (Garbagecollector). Permite al
programador liberarse de la gestin de la memoria y hace que ciertos bloques de
memoria puedan reaprovecharse, disminuyendo el nmero de huecos libres
(fragmentacin de memoria).
Cuando realicemos programas, crearemos objetos, haremos que stos interaccionen, etc.
Todas estas operaciones requieren de uso de memoria del sistema, pero la gestin de
sta ser realizada de manera transparente al programador. Todo lo contrario que ocurra
en otros lenguajes. Podremos crear tantos objetos como solicitemos, pero nunca
tendremos que destruirlos. El entorno de Java borrar los objetos cuando determine que
no se van a utilizar ms. Este proceso es conocido como recoleccin de basura, y
simplifica tu trabajo al programar una barbaridad.

7.6.- Java y los Bytecodes.


Un programa escrito en Java no es directamente ejecutable, es necesario que el cdigo
fuente sea interpretado por la Mquina Virtual Java. Cules son los pasos que se siguen
desde que se genera el cdigo fuente hasta que se ejecuta? A continuacin se detallan
cada uno de ellos.
Implementacin del cdigo fuente > Compilacin >Bitcodes> Mquina virtual
Una vez escrito el cdigo fuente (archivos con extensin .java), ste es precompilado
generndose los cdigos de bytes, Bytecodes o Java Bytecodes (archivos con
extensin .class) que sern interpretados directamente por la Mquina Virtual Java y
traducidos a cdigo nativo de la plataforma sobre la que se est ejecutando el programa.

Bytecode: son un conjunto de instrucciones en lenguaje mquina que


no son especficas para ningn procesador o sistema de cmputo. Un
intrprete de cdigo de bytes (bytecodes) para una plataforma
especfica ser quien los ejecute. A estos intrpretes tambin se les
conoce como Mquinas VirtualesJava o intrpretes Java de tiempo de
ejecucin.
En el proceso de precompilacin, existe un verificador de cdigos de bytes que se
asegurar de que se cumplen las siguientes condiciones:
El cdigo satisface las especificaciones de la Mquina Virtual Java.
No existe amenaza contra la integridad del sistema.
No se producen desbordamientos de memoria.

Tema 117

Los parmetros y sus tipos son adecuados.


No existen conversiones de datos no permitidas.
Para que un bytecode pueda ser ejecutado en cualquier plataforma, es imprescindible
que dicha plataforma cuente con el intrprete adecuado, es decir, la mquina virtual
especfica para esa plataforma. En general, la Mquina Virtual Java es un programa de
reducido tamao y gratuito para todos los sistemas operativos.

8.- Programas en Java.


Hasta ahora, hemos descrito el lenguaje de programacin Java, hemos hecho un recorrido
por su historia y nos hemos instruido sobre su filosofa de trabajo, pero te preguntars:
Cundo empezamos a desarrollar programas?
Qu elementos forman parte de un programa en Java?
Qu se necesita para programar en este lenguaje?
Podemos crear programas de diferente tipo?
No te impacientes, cada vez estamos ms cerca de comenzar la experiencia con el
lenguaje de programacin Java. Iniciaremos nuestro camino conociendo cules son los
elementos bsicos de un programa Java, la forma en que debemos escribir el cdigo y los
tipos de aplicaciones que pueden crearse en este lenguaje.

8.1.- Estructura de un programa.


En el grfico al que
puedes
acceder
a
continuacin,
se
presenta la estructura
general
de
un
programa realizado en
un lenguaje orientado a
objetos como es Java.

Tema 118

Vamos a analizar cada uno de los elementos que aparecen en dicho grfico:
publicclassClase_Principal: todos los programas han de incluir una clase como
sta. Es una clase general en la que se incluyen todos los dems elementos del
programa.
Entre otras cosas, contiene el mtodo o funcin main() que representa al
programa principal, desde el que se llevar a cabo la ejecucin del programa.
El archivo que contiene esta clase puede contener a su vez otras clases del
usuario, pero slo una puede ser public ya que si la clase es public, el nombre
del fichero .java que contiene el cdigo fuente de nuestro programa (que contiene
a dicha clase en definitiva), tiene que coincidir con el nombre de la clase que
estamos describiendo en estas lneas.

Ten en cuenta que Java distingue entre maysculas y minsculas.


Si le das a la clase principal el nombre PrimerPrograma, el
archivo .java tendr como identificador PrimerPrograma.java, que es
totalmente diferente a primerprograma.java. Adems, para Java los
elementos PrimerPrograma yprimerprograma seran
considerados
dos clases diferentes dentro del cdigo fuente.
Ms adelante hablaremos de las convenciones que suelen seguirse para
formar los nombres de las clases en Java, as como de cualquier otro
identificador usado por el lenguaje.

publicstaticvoidmain (String[] args): es el mtodo que representa al programa


principal, en l se podrn incluir las instrucciones que estimemos oportunas para
la ejecucin del programa. Desde l se podr hacer uso del resto de clases
creadas. Todos los programas Java tienen un mtodomain().
Comentarios: los comentarios se suelen incluir en el cdigo fuente para realizar
aclaraciones, anotaciones o cualquier otra indicacin que el programador estime
oportuna. Estos comentarios pueden introducirse de dos formas:
o Con // estaramos estableciendo una nica lnea completa de comentario,
es decir, todo lo que hay detrs, hasta que haya un salto de lnea, es
comentario.
o Con /* */. De esta forma con /* comenzaramos el comentario y ste no
terminara hasta que no insertramos */.
Bloques de cdigo: son conjuntos de instrucciones que se marcan mediante la
apertura y cierre de llaves { }. El cdigo as marcado es considerado interno al
bloque.
Punto y coma (;): aunque en el ejemplo de la imagenno hemos terminado
ninguna lnea de cdigo con punto y coma, para no distraer de momento con los
detalles, hay que hacer hincapi en que cada lnea de cdigo ha de terminar con
punto y coma (;). En caso de no hacerlo, tendremos errores sintcticos.

8.2.- El entorno bsico de desarrollo Java.


Ya conoces cmo es la estructura de un programa en Java, pero, qu necesitamos para
llevarlo a la prctica?
La herramienta bsica para empezar a desarrollar aplicaciones en Java es el JDK (Java
Development Kit o Kit de Desarrollo Java), que incluye un compilador y un intrprete
para lnea de comandos. Estos dos programas son los empleados en la precompilacin e
interpretacin del cdigo.
Como veremos, existen diferentes entornos para la creacin de programas en Java que
incluyen multitud de herramientas, pero por ahora nos centraremos en el entorno ms
bsico, extendido y gratuito, el Java Development Kit (JDK). Segn se indica en la propia
pgina
web
deOracle, JDK es
un
entorno
de
desarrollo
para
construir
aplicaciones, applets y componentes utilizando el lenguaje de programacin Java. Incluye

Tema 119

herramientas tiles para el desarrollo y prueba de programas escritos en Java y


ejecutados en la Plataforma Java.
As mismo, junto a JDK se incluye una implementacin del entorno de ejecucin Java,
el JRE (Java RuntimeEnvironment) para ser utilizado por el JDK. El JRE incluye la
Mquina Virtual de Java (MVJ JVM Java Virtual Machine), bibliotecas de clases y otros
ficheros que soportan la ejecucin de programas escritos en el lenguaje de
programacin Java.
SWF Tutorial instalacin JDK

Tema 120

8.3.- La API de Java.


Junto con el kit de desarrollo que hemos descargado e instalado anteriormente, vienen
incluidas gratuitamente todas las bibliotecas de la API (ApplicationProgramming
Interface Interfaz de programacin de aplicaciones) de Java, es lo que se conoce
como Bibliotecas de ClasesJava. Este conjunto de bibliotecas proporciona al
programador paquetes de clases tiles para la realizacin de mltiples tareas dentro de
un programa. Est organizada en paquetes lgicos, donde cada paquete contiene un
conjunto de clases relacionadas semnticamente.
En dcadas pasadas una biblioteca era un conjunto de programas que contenan cientos
de rutinas (una rutina es un procedimiento o funcin bien verificados, en determinado
lenguaje de programacin). Las rutinas de biblioteca manejaban las tareas que todos o
casi todos los programas necesitaban. El programador poda recurrir a esta biblioteca
para
desarrollar
programas
con
rapidez.
Una biblioteca de clases es un conjunto de clases de programacin orientada a objetos.
Esas clases contienen mtodos que son tiles para los programadores. En el caso
de Java cuando descargamos el JDK obtenemos la biblioteca de clases API. Utilizar las
clases y mtodos de las API de Java reduce el tiempo de desarrollo de los programas.
Tambin, existen diversas bibliotecas de clases desarrolladas por terceros que contienen
componentes reutilizables de software, y estn disponibles a travs de la Web.

8.4.- Afinando la configuracin.


Para que podamos compilar y ejecutar ficheros Java es necesario que realicemos unos
pequeos ajustes en la configuracin del sistema. Vamos a indicarle dnde encontrar los
ficheros necesarios para realizar las labores de compilacin y ejecucin, en este
caso javac.exe yjava.exe, as como las libreras contenidas en la API de Java y las clases
del usuario.
La
variable PATH: como
an
no
disponemos
de
un IDE (IntegratedDevelopmentEnvironment - Entono Integrado de Desarrollo) la nica
forma de ejecutar programas es a travs de lnea de comandos. Pero slo podremos
ejecutar programas directamente si la ruta hacia ellos est indicada en la
variable PATH del ordenador. Es necesario que incluyamos la ruta hacia estos programas
en nuestra variable PATH. Esta ruta ser el lugar donde se instal el JDK hasta su
directorio bin.
Para ello, sigue las indicaciones que te mostramos a continuacin.
SWF Configuracin variable PATH
Ms sobre la configuracin de variables de entorno en sistemas Windows y Linux:
Configurar el PATH en Windows
Configurar variables de entorno en Ubuntu
La variable CLASSPATH: esta variable de entorno establece dnde buscar las clases o
bibliotecas de la API de Java, as como las clases creadas por el usuario. Es decir, los
ficheros .class que se obtienen una vez compilado el cdigo fuente de un programa
escrito en Java. Es posible que en dicha ruta existan directorios y ficheros comprimidos en
los formatos .zip o .jar que pueden ser utilizados directamente por el JDK, conteniendo
en su interior archivos con extensin .class.
(Por ejemplo: C:\Program Files\Java\jdk1.6.0_25\bin)
Si no existe la variable CLASSPATH debes crearla, para modificar su contenido sigue el
mismo mtodo que hemos empleado para la modificacin del valor de la variable PATH,
anteriormente descrito. Ten en cuenta que la ruta que debes incluir ser el lugar donde se
instal el JDK hasta su directorio lib.
(Por ejemplo: C:\Program Files\Java\jdk1.6.0_25\lib)

8.5.- Codificacin, compilacin y ejecucin de aplicaciones.

Tema 121

Una vez que la configuracin del entorno Java est completada y tenemos el cdigo
fuente de nuestro programa escrito en un archivo con extensin .java, la compilacin de
aplicaciones se realiza mediante el programa javac incluido en el software de desarrollo
de Java.

Para llevar a cabo la compilacin desde la lnea de comandos,


escribiremos:
javac archivo.java
Donde javac es el compilador de Java y archivo.java es nuestro
cdigo fuente.

El resultado de la compilacin ser un archivo con el mismo nombre que el


archivo Java pero con la extensin .class. Esto ya es el archivo con el cdigo en forma
de bytecode, es decir, con el cdigo precompilado. Si en el cdigo fuente de nuestro
programa figuraran ms de una clase, veremos cmo al realizar la compilacin se
generarn tantos archivos con extensin .class como clases tengamos. Adems, si estas
clases tenan mtodo main() podremos ejecutar dichos archivos por separado para ver el
funcionamiento de dichas clases.
Para que el programa pueda ser ejecutado, siempre y cuando est incluido en su interior
el mtodo main(), podremos utilizar el intrprete incluido en el kit de desarrollo.

La ejecucin de nuestro programa desde la lnea de comandos


podremos hacerla escribiendo:
java archivo.class
Donde java es el intrprete y archivo.class es el archivo con el cdigo
precompilado.
Es IMPORTANTE aclarar
que
donde
ponemos archivo.class, nos referimos al archivo ya precompilado
en bytecodes, que tiene la extensin .class, pero NO hay que poner
dicha extensin para ejecutar el archivo, slo el nombre. Esto se ve
ms claro en las explicaciones del ejercicio resuelto.
Ejercicio resuelto:
Vamos a llevar a la prctica todo lo que hemos estado detallando a travs de la
creacin, compilacin y ejecucin de un programa sencillo escrito en Java.
Observa el cdigo que se muestra ms abajo, seguro que podrs entender parte de l.
Cpialo en un editor de texto, respetando las maysculas y las minsculas. Puedes
guardar el archivo con extensin .java en la ubicacin que prefieras. Recuerda que el
nombre de la clase principal (en el cdigo de ejemplo MiModulo) por ser public, debe
ser exactamente igual al del archivo con extensin .java. Si tienes esto en cuenta la
aplicacin podr ser compilada correctamente y ejecutada.
/**
*
La
clase
MiModulo
implementa
una
aplicacin
que
* simplemente imprime "Mdulo profesional - Programacin" en pantalla.
*/
classMiModulo {
publicstaticvoidmain(String[]
args)
{
System.out.println("Mdulo profesional - Programacin"); // Muestra la
cadena
de
caracteres.
}
}
Accede a la lnea de comandos y teclea, teniendo como directorio activo la carpeta
donde has guardado el archivo .java (y suponiendo que se ha establecido
correctamente
el
valor
para
la
variable
de
entorno PATH),
el
comando para compilarlo:
javac MiModulo.java
El compilador genera entonces un fichero de cdigo de bytes: MiModulo.class. Si
visualizas ahora el contenido de la carpeta vers que en ella est el archivo .java y uno

Tema 122

o varios (depende de las clases que contenga el archivo con el cdigo fuente)
archivos .class.
Finalmente, para realizar la ejecucin del programa debes utilizar la siguiente
sentencia:
java MiModulo
Si todo ha ido
Programacin.

bien,

vers

escrito

en

pantalla: Mdulo

profesional

8.5.1.- Solucin a posibles problemas con la codificacin de caracteres


acentuados.
Te ha pasado que al probar a ejecutar un programa que debe escribir algn carcter
acentuado, en su lugar aparecen caracteres extraos? Alguna vez has visitado una web
en la que todos los caracteres acentuados aparecen como un cuadradito negro con una
interrogacin dentro (Mara) o la como (Espaa)?Cmo evitar el problema de
los caracteres extraos al mostrar caracteres acentuados en Java?
Esto suele pasar cuando se intenta ejecutar un programa en Java que contiene caracteres
acentuados, y trabajamos con la consola de comandos. En cualquier caso, no debis
preocuparos demasiado de estos fallos en este mdulo, ya que la forma normal de
programar en Java NO es usando el JDK a pelo (aunque est bien que se sepa que es
posible), sino que se suele programar haciendo uso de un entorno de desarrollo como es
el caso de NetBeans, que este tipo de problemas los "solventa" por defecto, usando la
codificacin adecuada, de forma que los acentos se ven correctamente, etc.
A continuacin, se recomienda un enlace en el que explica muy bien a qu se debe el
problema, por qu se produce y cmo solucionarlo en distintos entornos.
Sobre las reglas de codificacin o... de dnde salen esos caracteres "raros"?
Una solucin muy simple, y que suele funcionar en la mayora de los casos consiste en
guardar el archivo .java, compilarlo, e indicarle en el momento de ejecutar cul es la
codificacin correcta que tiene que usar, forzando a que muestre la salida con esa
codificacin:
java -Dfile.encoding=cp850 PROG_programa1
En este ejemplo, la pgina de cdigos que usamos en nuestro sistema es la 850, y por
eso ponemos encoding=cp850, pero puedes forzar a usar cualquier otra codificacin
que use tu sistema. Para averiguar cul es la codificacin de tu sistema, puedes usar
desde la consola el comando chcp (son las iniciales deCHangeCodePage, ya que sirve
para mostrar y tambin para cambiar la codificacin que usa tu equipo).
Como regla general, podemos seguir una serie de pasos para no tener problemas con las
tildes (en entornos Windows). Es una manera alternativa para no tener que usar las
opciones de forzado de uso de una cierta tabla de caracteres al ejecutar los
comandos javac o java. Aunque esta solucin implica que debemos saber de antemano
qu juego de caracteres se usar all donde vayamos a ejecutar nuestro programa. Para
los primeros ejercicios donde sabemos que los vamos a hacer en la consola de comandos,
nos puede valer esta "artimaa", aunque como ya se ha dicho, cuando utilicemos
entornos de desarrollo (en nuestro caso NetBeans) podremos "olvidarnos" de estas
cuestiones. Los pasos a seguir son los siguientes:
En la consola de Windows ejecutamos el comando chcp para que nos diga qu
juego de caracteres est usando nuestro sistema. (Ver la captura de pantalla
anterior).
Con Notepad++ creo un archivo en blanco y antes de nada le indico que quiero
usar el juego de caracteres de Europa Oriental/OEM 850.

Pego el cdigo de mi programa y lo guardo como archivo Java source (.java)

Tema 123

Finalmente pasamos a compilar el .java y a ejecutar el .class y se ver


correctamente.

8.6.- Tipos de aplicaciones en Java.


La versatilidad del lenguaje de programacin Java permite al programador crear distintos
tipos de aplicaciones. A continuacin, describiremos las caractersticas ms relevantes de
cada uno de ellos:
Aplicaciones de consola:
o Son programas independientes al igual que los creados con los lenguajes
tradicionales.
o Se componen como mnimo de un archivo .class que debe contar
necesariamente con el mtodo main().
o No necesitan un navegador web y se ejecutan cuando invocamos el
comando java para iniciar la Mquina Virtual de Java (JVM). De no
encontrarse el mtodo main() la aplicacin no podr ejecutarse.
o Las aplicaciones de consola leen y escriben hacia y desde la entrada y
salida estndar, sin ninguna interfaz grfica de usuario.
Aplicaciones grficas:
o Aquellas que utilizan las clases con capacidades grficas, como Swing, que
es la biblioteca para la interfaz grfica de usuario avanzada de la
plataforma Java SE.
o Incluyen las instrucciones import, que indican al compilador de Java que
las clases del paquete javax.swing se incluyan en la compilacin.
Applets:
o Son programas incrustados en otras aplicaciones, normalmente una pgina
web que se muestra en un navegador. Cuando el navegador carga una web
que contiene un applet, ste se descarga en el navegador web y comienza
a ejecutarse. Esto nos permite crear programas que cualquier usuario
puede ejecutar con tan solo cargar la pgina web en su navegador.
o Se pueden descargar de Internet y se observan en un navegador.
Los applets se descargan junto con una pgina HTML desde un servidor
web y se ejecutan en la mquina cliente.
o No tienen acceso a partes sensibles (por ejemplo: no pueden escribir
archivos), a menos que uno mismo le d los permisos necesarios en el
sistema.
o No tienen un mtodo principal.
o Son multiplataforma y pueden ejecutarse en cualquier navegador que
soporte Java.
Servlets:
o Son componentes de la parte del servidor de Java EE, encargados de
generar respuestas a las peticiones recibidas de los clientes.
o Los servlets, al contrario de los applets, son programas que estn pensados
para trabajar en el lado del servidor y desarrollar aplicaciones Web que
interacten con los clientes.
Midlets:
o Son aplicaciones creadas en Java para su ejecucin en sistemas de
propsito simple o dispositivos mviles. Los juegos Java creados para
telfonos mviles son midlets.
o Son programas creados para dispositivos embebidos (se dedican a una sola
actividad), ms especficamente para la mquina virtual Java Micro
Edition (Java ME).
o Generalmente son juegos y aplicaciones que se ejecutan en telfonos
mviles

9.- Entornos Integrados de Desarrollo (IDE).

Tema 124

En los comienzos de Java la utilizacin de la lnea de comandos era algo habitual. El


programador escriba el cdigo fuente empleando un editor de texto bsico,
seguidamente, pasaba a utilizar un compilador y con l obtena el cdigo compilado. En
un paso posterior, necesitaba emplear una tercera herramienta para el ensamblado del
programa. Por ltimo, poda probar a travs de la lnea de comandos el archivo
ejecutable. El problema surga cuando se produca algn error, lo que provocaba tener
que volver a iniciar el proceso completo.
Estas circunstancias hacan que el desarrollo de software no estuviera optimizado. Con el
paso del tiempo, se fueron desarrollando aplicaciones que incluan las herramientas
necesarias para realizar todo el proceso de programacin de forma ms sencilla, fiable y
rpida. Para cada lenguaje de programacin existen mltiples entornos de desarrollo,
cada uno con sus ventajas e inconvenientes. Dependiendo de las necesidades de la
persona que va a programar, la facilidad de uso o lo agradable que le resulte trabajar con
l, se elegir entre unos u otros entornos.
Para el lenguaje de programacin Java existen mltiples alternativas, siendo los
principales entornos de desarrollo NetBeans (que cuenta con el apoyo de la
empresa Sun), Eclipse y JCreator. Los dos primeros son gratuitos, con soporte de
idiomas y multiplataforma (Windows, Linux, MacOS).
Y cul ser con el que vamos a trabajar? El entorno que hemos seleccionado llevar a
cabo nuestros desarrollos de software en este mdulo profesional ser NetBeans, al
haber sido construido por la misma compaa que cre Java, ser de cdigo abierto y
ofrecer capacidades profesionales. Aunque, no te preocupes, tambin haremos un
recorrido por otros entornos destacables.

9.1.- Qu son?
Son aplicaciones que ofrecen la posibilidad de llevar a cabo el proceso completo de
desarrollo de software a travs de un nico programa. Podremos realizar las labores de
edicin, compilacin, depuracin, deteccin de errores, correccin y ejecucin de
programas escritos en Java o en otros lenguajes de programacin, bajo un entorno grfico
(no mediante lnea de comandos). Junto a las capacidades descritas, cada entorno aade
otras que ayudan a realizar el proceso de programacin, como por ejemplo: cdigo fuente
coloreado, plantillas para diferentes tipos de aplicaciones, creacin de proyectos, etc.
Hay que tener en cuenta que un entorno de desarrollo no es ms que una fachada para el
proceso de compilacin y ejecucin de un programa. Qu quiere decir eso? Pues que si
tenemos instalado un IDE (Entorno Integrado de Desarrollo) y no tenemos instalado el
compilador, no tenemos nada.
Ms sobre lo que son los Entornos Integrados de Desarrollo (IDE):
Definicin de Entorno Integrado de Desarrollo Definicin de Entorno Integrado de
Desarrollo en Wikipedia

9.2.- IDE actuales.


Existen en el mercado multitud de entornos de desarrollo para el lenguaje Java, los hay
de libre distribucin, de pago, para principiantes, para profesionales, que consumen ms
recursos, que son ms ligeros, ms amigables, ms complejos que otros, etc.
Entre los que son gratuitos o de libre distribucin tenemos:
NetBeans.
Eclipse.
BlueJ.
Jgrasp.
Jcreator LE.
Entre los que son propietarios o de pago tenemos:
IntelliJ IDEA.
JBuilder.
JCreator.
JDeveloper.
Pero, cul o cules son los ms utilizados por la comunidad de programadores Java?
El puesto de honor se lo disputan entre Eclipse, IntelliJ IDEA y NetBeans.

Tema 125

En los siguientes epgrafes haremos una descripcin de NetBeans y Eclipse, para


posteriormente desarrollar los puntos claves del entorno NetBeans.
Si quieres conocer la situacin actual de uso y comparar los diferentes entornos
integrados de desarrollo para el lenguaje de programacin Java, puedes ampliar datos en
el siguiente artculo:
Artculo con comparativa sobre utilizacin de entornos Java. (En ingls)
Para acceder a los lugares de Internet donde obtener los diferentes entornos integrados
de desarrollo, puedes utilizar la lista que te ofrecemos en este enlace:
Listado con acceso a las webs de los diferentes entornos Java

9.3.- El entorno NetBeans.


Como se ha indicado anteriormente, el entorno de desarrollo que vamos a utilizar a lo
largo de los contenidos del mdulo profesional ser NetBeans. Por lo que vamos primero
a analizar sus caractersticas y destacar las ventajas que puede aportar su utilizacin.
Se trata de un entorno de desarrollo orientado principalmente al lenguaje Java, aunque
puede servir para otros lenguajes de programacin. Es un producto libre y gratuito sin
restricciones de uso. Es un proyecto de cdigo abierto de gran xito, con una comunidad
de usuarios numerosa, en continuo crecimiento y apoyado por varias empresas.
El origen de este entorno hay que buscarlo en un proyecto realizado por estudiantes de la
Repblica Checa. Fue el primer IDE creado en lenguaje Java. Un tiempo ms tarde, se
form una compaa que sera comprada en 1999 por Sun Microsystems (quien haba
creado el lenguaje Java). Poco despus, Sun decidi que el producto sera libre y de
cdigo abierto y naci Netbeans como IDE de cdigo abierto para crear aplicaciones Java.
NetBeans lleva tiempo pugnando con Eclipse por convertirse en la plataforma ms
importante para crear aplicaciones en Java y hasta el nombre (Eclipse) es toda una
declaracin de intenciones de hacerle la competencia a Sun (la empresa que
cre NetBeans). Hoy en da es un producto en el que participan decenas de empresas
con Sun a la cabeza. Sigue siendo software libre y ofrece las siguientes posibilidades:
Escribir cdigo en C, C++, Ruby, Groovy, Javascript, CSS y PHP adems de Java.
Permitir crear aplicaciones J2EE gracias a que incorpora servidores de
aplicaciones Java (actualmente Glassfish y Tomcat)
Crear aplicaciones Swing de forma sencilla, al estilo del Visual Studio de Microsoft.
Crear aplicaciones JME para dispositivos mviles.
La ltima versin lanzada en Junio de 2013 es la NetBeans 7.3.1, pero desde el 30 de
Septiembre de 2013 ya est disponible en su web la NetBeansversion 7.4 RC2.
Puedes consultar la hoja de ruta para desarrollos NetBeans en el siguiente enlace:
NetBeansReleaseRoadmap
La plataforma NetBeans permite que las aplicaciones sean desarrolladas a partir de un
conjunto de componentes de software llamados mdulos. Un mdulo es un
archivo Java que
contiene
clases
de Java escritas
para
interactuar
con
las API de NetBeans y un archivo especial (manifest file) que lo identifica como mdulo.
Las aplicaciones construidas a partir de mdulos pueden ser extendidas agregndole
nuevos mdulos.
Debido a que los mdulos pueden ser desarrollados
independientemente, las aplicaciones basadas en esta plataforma pueden ser extendidas
fcilmente por cualquiera que desarrolle tambin software.
Cada mdulo provee una funcin bien definida, tales como el soporte de Java, edicin, o
soporte para el sistema de control de versiones. NetBeans contiene todos los mdulos
necesarios para el desarrollo de aplicaciones Java en una sola descarga, permitiendo a la
persona que va a realizar el programa comenzar a trabajar inmediatamente.
Encuentra ms informacin sobre esta plataforma en los enlaces que te proponemos a
continuacin:
Informacin oficial sobre NetBeans
Versiones del entorno NetBeans

9.4.- Instalacin y configuracin.

Tema 126

Para realizar la instalacin del entorno NetBeans, seguiremos los siguientes pasos
bsicos:
1. Descarga de la versin deseada desde la web oficial o desde los enlaces
propuestos ms abajo. La versin completa contiene todas las posibilidades
aunque es la ms pesada (unos 224 MegaBytes). En nuestro caso, por estar en
fase de iniciacin, podra ser suficiente descargar la versin ms bsica (unos 81
MegaBytes).
2. Seleccionar la plataforma o sistema operativo, existen versiones para Windows,
Linux y MacOS. Tanto en Windows como en Linux, se descarga un archivo
ejecutable que se encarga de la instalacin.
3. Seleccionar el idioma.
4. Comenzar la descarga del archivo de instalacin ejecutable y una vez finalizada,
lanzar ste, comenzando la instalacin en nuestro equipo.
5. En las primeras pantallas, seleccionaremos los componentes a instalar. Como
mnimo, para poder programar en Java ser imprescindible instalar el IDE bsico
y Java SE.
6. Posteriormente, establecemos el directorio donde se instalar NetBeans, as como
la carpeta que contiene el JDK que se utilizar por defecto.
7. Finalmente, la instalacin se completa y dispondremos de este entorno totalmente
operativo.
Para llevar a cabo las operaciones descritas en el paso 1, te ofrecemos la posibilidad de
descargar cada una de las partes por separado, o bien, en conjunto, a travs de los
siguientes enlaces:
Descarga nicamente NetBeans si tienes ya instalado el JDK.
Descarga NetBeans y JDK desde la pgina oficial de ORACLE
En este ltimo enlace, debes elegir el icono correspondiente a JDK 7u40 &NetBeans 7.3.1,
y a partir de ah, seleccionar el archivo de descarga adecuado para tu equipo, de forma
muy similar a como habamos hecho para la descarga del JDK. El proceso de instalacin
tampoco tiene ninguna dificultad.

9.5.- Aspecto del entorno y gestin de proyectos.

La pantalla inicial de nuestro entorno de desarrollo ofrece accesos directos a las


operaciones ms usuales: aprendizaje inicial, tutoriales, ejemplos, demos, los ltimos
programas realizados y las novedades de la versin.
Para comenzar a describir el aspecto del entorno, es necesario crear un nuevo proyecto
accediendo al men File - New Project, indicaremos el tipo de aplicacin que vamos a
crear.
Una de las ventajas que ofrece este entorno es poder examinar nuestros proyectos a
travs de la vista Archivos. Esta vista nos ensea la realidad de los archivos del
proyecto, la carpeta build contiene los archivos compilados (.class), la carpeta src el
cdigo fuente y el resto, son archivos creados por Netbeans para comprobar la
configuracin del proyecto o los archivos necesarios para la correcta interpretacin del
cdigo en otros sistemas (en cualquier caso no hay que borrarlos). Para activar esta vista,
selecciona en el men principal Windows - Files.

You might also like