Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Caso prctico
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.
index.html[07/10/2014 19:42:09]
Caso prctico
Ada conoce bien lo que significa tener que llevar a cabo el proceso completo
de creacin de software y sabe que, en ocasiones, no se le da la
importancia que debera a las fases iniciales de este proceso. Quiere que
Juan,
que desarrolla programas casi sin darse cuenta, recuerde las
ventajas que aporta un buen anlisis inicial de los problemas a solucionar y
que no aborde el desarrollo de sus programas sentndose directamente
ante el
ordenador a teclear cdigo.
Juan le comenta a Ada y a Mara:
La verdad es que cuando conoces bien un lenguaje de programacin crees que puedes hacer cualquier
programa directamente sobre el ordenador, pero al final te das cuenta de que deberas haberte parado a
Resolucin de problemas
En la vida real...
En Programacin...
Observacin de la
situacin
o
problema.
Pensamos en una
o varias posibles
soluciones.
Aplicamos
solucin
estimamos
adecuada.
la
que
ms
index.html[07/10/2014 19:42:09]
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.
index.html[07/10/2014 19:42:09]
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
Autoevaluacin
Caso prctico
index.html[07/10/2014 19:42:09]
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.
Como habrs podido apreciar, existen mltiples paradigmas, incluso puede haber lenguajes de programacin que no se
Smalltalk es un lenguaje basado en el paradigma
clasifiquen nicamente dentro de uno de ellos. Un lenguaje como
Scheme, en cambio, soporta slo programacin funcional.
Python,
orientado a objetos. El lenguaje de programacin
soporta mltiples paradigmas.
Para saber ms
Te proponemos el siguiente enlace en el que encontrars informacin adicional sobre los diferentes paradigmas
de programacin.
index.html[07/10/2014 19:42:09]
Autoevaluacin
Caso prctico
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.
Fase de implementacin.
Fase de explotacin y mantenimiento.
A continuacin, analizaremos cada una de ellas.
index.html[07/10/2014 19:42:09]
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
Mostrar retroalimentacin
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.
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
index.html[07/10/2014 19:42:09]
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.
Autoevaluacin
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.
Peridicamente ser necesario realizar evaluaciones y, si es necesario, llevar a cabo
index.html[07/10/2014 19:42:09]
para que
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 plicabilidad.
Ser imprescindible aadir una documentacin adecuada que facilite al
programador o a la programadora la comprensin,
uso y modificacin de dichos programas.
Caso prctico
Sean cuales sean las fases en las que realicemos el proceso de desarrollo de software, y casi independientemente de l,
siempre se debe aplicar un modelo de ciclo de vida.
Ciclo de vida del software: es una sucesin de estados o fases por las cuales pasa un software a lo largo de su
"vida".
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.
index.html[07/10/2014 19:42:09]
Autoevaluacin
Entre los distintos tipos de ciclo de vida del software, los modelos incremental y en cascada son modelos
del tipo evolutivo.
Verdadero
Falso
Caso prctico
desarrollamos.
Juan indica que l conoce las caractersticas generales de algunos
lenguajes, pero que le gustara saber algo ms sobre los que hubo, hay y
habr.
Mara que asiente con la cabeza, piensa que aprender
ms sobre los lenguajes disponibles en la actualidad
puede ayudar a la hora de elegir entre unos u otros.
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.
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
index.html[07/10/2014 19:42:09]
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
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.
index.html[07/10/2014 19:42:09]
Para saber ms
Como recordatorio, te proponemos ver el siguiente vdeo sobre cmo funciona el sistema binario.
Autoevaluacin
Algunas operaciones y su
mnemotcnico en lenguaje
Ensamblador.
Operacin
Lenguaje Ensamblador
MULTIPLICAR
MUL
DIVIDIR
DIV
MOVER
MOV
En el siguiente grfico puedes ver parte de un programa escrito en lenguaje ensamblador. En color rojo se ha resaltado el
index.html[07/10/2014 19:42:09]
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.
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.
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.
Para ilustrar el proceso de compilacin de programas te proponemos el siguiente esquema:
index.html[07/10/2014 19:42:09]
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.
Autoevaluacin
Durante
la fase de enlazado, se incluyen en el cdigo fuente determinados mdulos (bibliotecas) que son
necesarios para que el programa pueda realizar ciertas tareas, posteriormente se obtendr el cdigo
ejecutable.
Verdadero
Falso
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 pseudocompilados 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
Mquina Virtual Java se encargar de interpretar este cdigo y, para su ejecucin, lo
detallarn ms adelante). La
traducir a cdigo mquina del procesador en particular sobre el que se est trabajando.
Debes conocer
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.
index.html[07/10/2014 19:42:09]
Autoevaluacin
En Java el cdigo fuente es compilado, obtenindose el cdigo binario en forma de bytecodes. Pero,
cul es la extensin del archivo resultante?
Extensin .obj.
Extensin .class.
Extensin .java.
Caso prctico
Ada indica a Juan y Mara que el lenguaje elegido para sus desarrollos va a
ser Java.
La flexibilidad, facilidad de aprendizaje, similitud con algunos lenguajes que
ya conocen y su capacidad para adaptarse a cualquier plataforma, hacen
que sea ideal para producir las nuevas aplicaciones de
BK Programacin.
index.html[07/10/2014 19:42:09]
La seguridad est garantizada, ya que las aplicaciones Java no acceden a zonas delicadas de memoria o de sistema.
Debes conocer
Obtn una descripcin detallada de las caractersticas reseadas anteriormente a travs del siguiente artculo:
index.html[07/10/2014 19:42:09]
Para saber ms
Si deseas conocer ms sobre los orgenes del lenguaje Java, aqu te ofrecemos ms informacin:
Los orgenes de Java
Historia de Java
Lnea de tiempo de la historia de Java
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
instancias. Pero, no hay que alarmarse, estos conceptos se vern ms adelante
tipos, se identifican con el nombre de
en sucesivas unidades.
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.
index.html[07/10/2014 19:42:09]
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.
Autoevaluacin
Qu elemento es imprescindible para que una aplicacin escrita en Java pueda ejecutarse en un
ordenador?
Que disponga de conexin a Internet y del hardware adecuado.
Que tenga instalado un navegador web y conexin a Internet.
Que tenga la Mquina Virtual Java adecuada instalada.
produzcan efectos no deseados. Los test que se 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
index.html[07/10/2014 19:42:09]
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 (Garbage collector).
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.
Autoevaluacin
, por lo que la incorporacin del Garbage Collector evita que se produzca un crecimiento de los huecos libres en
memoria, que recibe el nombre de
Enviar
de memoria.
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 Virtuales Java o intrpretes Java de
tiempo de ejecucin.
index.html[07/10/2014 19:42:09]
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.
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.
Caso prctico
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?
index.html[07/10/2014 19:42:09]
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.
Vamos a analizar cada uno de los elementos que aparecen en dicho grfico:
public class Clase_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 y primerprograma 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.
terminar con punto y coma (;). En caso de no hacerlo, tendremos errores sintcticos.
index.html[07/10/2014 19:42:09]
Autoevaluacin
public static void main (String[] args) es la clase general del programa.
Verdadero
Falso
Debes conocer
Para poder utilizar JDK y JRE es necesario realizar la descarga e instalacin de stos. Puedes seguir los pasos
del proceso a continuacin:
index.html[07/10/2014 19:42:09]
Para
poder desarrollar nuestros primeros programas en Java slo necesitaremos un editor de texto plano y los elementos
que acabamos de instalar a travs de Java SE.
Autoevaluacin
Podemos desarrollar programas escritos en Java haciendo uso exclusivamente de un editor de textos
para la escritura del archivo fuente .java y usando el JRE para poder compilarlos y ejecutarlos.
Verdadero
Falso
Para saber ms
Si quieres acceder a la informacin oficial sobre la API de Java, te proponemos el siguiente enlace (est en
Ingls).
Informacin oficial sobre la API de Java
Autoevaluacin
index.html[07/10/2014 19:42:09]
Debes conocer
Para saber ms
index.html[07/10/2014 19:42:09]
Configurar el PATH en Windows
La variable CLASSPATH: esta variable de entorno establece dnde buscar las clases o biblitecas 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.
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.
Autoevaluacin
Qu
variable de sistema o de entorno debemos configurar correctamente para que podamos compilar
directamente desde la lnea de comandos nuestros programas escritos en lenguaje Java?
CLASSPATH.
PATH.
Javac.exe.
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.
Donde java es el intrprete y archivo.class es el archivo con el cdigo precompilado. Es IMPORTANTE aclarar que
index.html[07/10/2014 19:42:09]
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.
Mostrar retroalimentacin
Para saber ms
A
continuacin, recomendar 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:
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 de CHange CodePage,
ya que sirve para mostrar y
tambin para cambiar la codificacin que usa tu equipo). Mira un ejemplo en la siguiente captura de pantalla:
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
index.html[07/10/2014 19:42:09]
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.
Finalmente pasamos a compilar el .java y a ejecutar el .class y vemos en esta captura que se hace correctamente:
uno de ellos:
index.html[07/10/2014 19:42:09]
Aplicaciones de consola:
Son programas independientes al igual que los creados con los lenguajes
tradicionales.
Se componen como mnimo de un archivo .class que debe contar
necesariamente con el mtodo main().
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.
Las aplicaciones de consola leen y escriben hacia y desde la entrada y salida estndar, sin ninguna interfaz
grfica de usuario.
Aplicaciones grficas:
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.
Incluyen las instrucciones import, que indican al compilador de Java que las clases del paquete javax.swing se
incluyan en la compilacin.
Applets:
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.
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.
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.
No tienen un mtodo principal.
Son multiplataforma y pueden ejecutarse en cualquier navegador que soporte Java.
Servlets:
Son componentes de la parte del servidor de Java EE, encargados de generar respuestas a las peticiones
recibidas de los clientes.
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:
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.
Son programas creados para dispositivos embebidos (se dedican a una sola actividad), ms especficamente
para la mquina virtual Java Micro Edition (Java ME).
Generalmente son juegos y aplicaciones que se ejecutan en telfonos mviles.
Autoevaluacin
Un Applet
es totalmente seguro, ya que no puede acceder, en ningn caso, a zonas sensibles del sistema.
Es decir, no podra borrar o modificar nuestros archivos.
Verdadero
Falso
Caso prctico
index.html[07/10/2014 19:42:09]
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
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
Para saber ms
Si deseas conocer algo ms sobre lo que son los Entornos Integrados de Desarrollo (IDE) accede a las
definiciones que te proponemos a continuacin:
Definicin de Entorno Integrado de Desarrollo
Definicin de Entorno Integrado de Desarrollo en Wikipedia
index.html[07/10/2014 19:42:09]
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.
Debes conocer
Cada
uno de los entornos nombrados ms arriba posee caractersticas que los hacen diferentes unos de otros,
pero para tener una idea general de la versatilidad y potencia de cada uno de ellos, accede a la siguiente tabla
comparativa:
Comparativa entornos para Java
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.
En los siguientes epgrafes haremos una descripcin de NetBeans y Eclipse, para
posteriormente desarrollar los puntos claves del entorno NetBeans.
Para saber ms
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
Autoevaluacin
index.html[07/10/2014 19:42:09]
Eclipse.
IntelliJ IDEA.
JCreator.
Glassfish y
Para saber ms
Encuentra ms informacin sobre esta plataforma en los enlaces que te proponemos a continuacin:
Informacin oficial sobre NetBeans
Versiones del entorno NetBeans
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.
Debes conocer
Para aprender cmo realizar la instalacin de NetBeans, en sus ltimas versiones, y tanto en plataformas
Windows como Linux,
lo mejor es "ir a las fuentes" y seguir las instrucciones de instalacin que se muestran en
la propia pgina web del proyecto NetBeans:
NetBeans IDE 7.3.1 Installation Instructions
Estn en ingls, pero manejarse mniamente con el ingls tcnico es algo que, como futuro
profesional de la
programacin, te aconsejamos que empieces a practicar activamente. En cualquier caso, si usas por ejemplo el
navegador Google Chrome, puedes echar mano de la ayudita que proporciona la traduccin automtica de una
web completa. La
traduccin automtica que proporciona es bastante aceptable... aunque obviamente no es
perfecta.
Si necesitas algo
ms detallado, en youtube puedes encontrar multitud de videotutoriales que te explican el
proceso de instalacin e incluso la creacin de los primeros programas.
Buscar informacin en la web tambin es parte importante del trabajo de cualquier profesional de la
progamacin, te animamos a intentarlo!!
index.html[07/10/2014 19:42:09]
Debes conocer
Para continuar con la creacin de nuestro proyecto y la descripcin del aspecto del entorno, accede a la siguiente
presentacin:
Cuando trabajemos con NetBeans, nuestros proyectos harn uso de clases para poder desarrollar las
operaciones de nuestros programas. Estas clases se agruparn en paquetes y en la siguiente presentacin
puedes aprender cmo se gestionan a travs del entorno:
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.
index.html[07/10/2014 19:42:09]
Autoevaluacin
.
Enviar
Licencia: CC-BY-SA
Procedencia:
http://commons.wikimedia.org/wiki/File:Wiener_Melange_0363wien_img_9691.jpg
Licencia: CC-by-sa
Procedencia:
http://commons.wikimedia.org/wiki/File:Cruce_de_caminosEl_Hierro.jpg
Autora: Desconocido.
Procedencia: http://commons.wikimedia.org/wiki/File:OstrichHead.JPG
Procedencia: http://commons.wikimedia.org/wiki/File:Codigo_de_maquina.png
Autora: Robpatrik
index.html[07/10/2014 19:42:09]
Recurso
Licencia: CC BY-NC-SA
Procedencia: http://www.flickr.com/photos/alkalinezoo/3595562784/
Licencia: CC-by-sa
Procedencia: http://commons.wikimedia.org/wiki/File:2010-11-14_orr_ob_08.JPG
Licencia: GNU/GPL
Procedencia: http://commons.wikimedia.org/wiki/File:Exquisite-kcontrol.png
Autora: netbeans.org
Procedencia: http://netbeans.org
Procedencia: http://commons.wikimedia.org/wiki/File:Maldives_00147.JPG
index.html[07/10/2014 19:42:09]