Download Practica Eclipse
Document related concepts
no text concepts found
Transcript
INSTITUTO TECNOLÓGICO SUPERIOR DE SAN MARTÍN TEXMELUCAN INGENIERÍA EN SISTEMAS COMPUTACIONALES SISTEMAS DISTRIBUIDOS “PRÀCTICA COLOCAR LOS PLUGIN DE CORBA Y DE RMI” Profesor: Susana Garrido Cortes Alumnos: Susana Yarell Rodríguez Contreras Isaías Rodríguez Ventura Nora Estrada Serrano 8°B Esta práctica se dedica, fundamentalmente, a conocer el entorno de trabajo para desarrollo de aplicaciones en Java en el entorno Eclipse. Este IDE es un proyecto de software libre y está apoyado por gran número de empresas con interés en el lenguaje Java y también en otros lenguajes. Se encuentra disponible para las plataformas Linux, Windows y Mac OS en http://ww.eclipse.org: Esta práctica introduce el método de trabajo a seguir en cada práctica y a la programación básica en Java. 1.1.- El entorno de trabajo El entorno de trabajo está formado, básicamente, por: 1. El IDE Eclipse es una herramienta de software libre para desarrollo de programas en Java, disponible para plataformas Linux, MacOs X y Windows XP. Disponible en: http://www.eclipse.org/downloads/ Su funcionalidad se puede ampliar con plugins. El programa de prácticas de la asignatura requiere instalar específicamente los siguientes plugins: Plugin RMI Genady - Name: RMI Plugin for Eclipse v2.0 - URL: http//www.genady.net/rmi/v20/install/ Plugin CORBA ORBstudio - Descargar de: http//www.orbzone.org Plugin Visual Editor (VE) - Parte de la distribución Europa. Descargar con el update manager del repositorio Callisto. Para poder instalar el Plugin antes mencionado se necesitaba instalar el “Galileo” para que funcionara correctamente si no instalas en Plugin que acabamos de mencionar el VE nunca se podrá instalar. A continuación se muestran los enlaces donde fueron descargados los Plugins: Galileo http://download.eclipse.org/releases/galileo VE http://download.eclipse.org/tools/ve/updates/1.4/ Plugin Web Tool Platforms (WTP). - Parte de la distribución Europa. Descargar con el update manager del repositorio WTPupdates. My Marketplace Update Repo http://portlet-eclipse.sourceforge.net/update Es necesario crear un nuevo proyecto no sólo para desarrollar un nuevo programa de Java, sino para editar también archivos ya existentes (como por ejemplo, un programa ".java" almacenado en un diskette). Para crear un nuevo proyecto, seleccione en la línea de menús principal "File > New > Project...". También es posible seleccionar "New > Project..." haciendo clic derecho en cualquier parte una vista de Eclipse (como por ejemplo, el Package Explorer o el ResourceNavigator). Hay varios tipos de proyectos de Eclipse que pueden ser creados: • Para crear o editar programas Java, un "Java Project" debería ser creado. Nótese que dentro de un proyecto de Java también puede almacenarse toda la información relacionada con el proyecto (la cual no tiene por qué reducirse estrictamente a código fuente, sino que también puede contener documentación y otros archivos relacionados). • Los "Simple Project" sólo deberían crearse para almacenar documentos y otros archivos, pero no código Java que se desee compilar. Por ello, siempre que se creen archivos ".java" sería recomendable crear un "Java Project". • Los "Plug-in Development Project" se usan para añadir nuevos módulos y funciones al entorno Eclipse. Estos proyectos sólo son necesarios si se es un desarrollador de Eclipse. • Los proyectos de "EMF" se utilizan para crear modelos de análisis y diseño. Puesto que este tutorial se centra en utilizar Eclipse para programar en Java, escogeremos crear un nuevo "Java Project" seleccionando "Java > Java Project" y haciendo clic en el botón "Next>" del asistente de creación. Tras esto, debe especificarse un nuevo nombre para el proyecto. Los proyectos profesionales se nombran utilizando nombres de dominio dados la vuelta para evitar posibles conflictos de nombrado. Sin embargo, para un proyecto de uso interno cualquier nombre descriptivo será suficiente. En este ejemplo, se ha llamado al nuevo proyecto "Eclipse Tutorial". Si se usa el directorio por defecto, los archivos del proyecto se almacenarán en el directorio "[DirectorioDeInstalación]\workspace\[NombreProyecto]". También es posible especificar un directorio diferente en el que guardar dichos contenidos. Pese a que en este punto es ya posible terminar la creación del nuevo proyecto haciendo clic en el botón "Finish", es recomendable pulsar de nuevo el botón "Next>" para definir explícitamente de esta manera una carpeta fuente para los archivos ".java" desde el principio. Las carpetas fuente ("Source Folders") almacenan los archivos de código fuente de Java (.java), de manera que Eclipse sepa donde encontrarlos y pueda realizar la compilación automática de los mismos cada vez que un archivo sea guardado. Para crear dicha carpeta fuente seleccione la pestaña de "Source" y pulse el botón "Add Folder...". Seleccione el proyecto recientemente creado y pulse el botón "Create New Folder". Un buen nombre para esta carpeta fuente podría ser sencillamente "src". Tras especificar dicho nombre, pulse "Ok". A la pregunta de si desea actualizar la carpeta de salida de archivos compilados, debería responder afirmativamente. De este modo, los archivos ".class" que resulten de la compilación de los ".java" almacenados en la carpeta fuente irán a parar a la carpeta "\bin". Pulse el botón "Finish" para terminar el proceso de creación del nuevo proyecto. Si se nos pregunta si deseamos pasar a la perspectiva de Java, deberíamos responder afirmativamente. Una vez que se ha creado un nuevo proyecto, es hora de aprender cómo crear los diversos elementos de Java. Para seguir los pasos que se exponen a continuación es necesario cambiar a la "Perspectiva Java" (si no se ha hecho ya) seleccionando "Window>Perspectives> Java". La perspectiva de Java contiene las vistas y editores más útiles a la hora de crear nuevos programas en Java. Haciendo clic derecho en la carpeta fuente recientemente creada (por ejemplo, "src") dentro de la vista del Package Explorer, aparecerá un menú contextual. Seleccionando "New >" en dicho menú se mostrará una lista con los diversos elementos de Java que pueden ser creados. Algunos de dichos elementos pueden ser creados también realizando clic sobre los iconos del menú de la parte superior de la pantalla. Las clases de Java son los archivos ".java" que contienen el código fuente y que serán posteriormente compilados en archivos ".class". Estos archivos Java tienen que ser almacenados dentro de la carpeta fuente recientemente creada (por ejemplo, "src"). Pulse "New >Class" para abrir la ventana de creación de clases. 1.5.- Ficheros de apoyo 1.5.1.- Fichero Objetos.java packagehola; import java.io.*; classPunto { publicint x = 0; publicint y = 0; publicPunto(int x, int y) { this.x = x; this.y = y; } } classRectangulo { protected Punto origen; protectedintancho = 0; protectedint alto = 0; private static String nombreClase ="Rectangulo"; publicRectangulo(intorigenx, intorigeny, intancho, int alto){ origen=new Punto(origenx, origeny); this.ancho=ancho; this.alto=alto; } publicRectangulo(Punto p, int ancho, int alto){ origen= p; this.ancho=ancho; this.alto=alto; } publicRectangulo(int ancho, int alto){ origen= new Punto(0,0); this.ancho=ancho; this.alto=alto; } publicRectangulo(){ origen= new Punto(0,0); this.ancho=0; this.alto=0; } publicintancho(){ returnancho; } publicint alto(){ return alto; } publicint area(){ return (ancho*alto); } public void mover(intarriba, intderecha){ origen.x+=arriba; origen.y+=derecha; } public String toString() { return "(Origen: {" + Integer.toString(origen.x) + "," + Integer.toString(origen.y) + "}, Final: {" + Integer.toString(origen.x+ancho) + "," + Integer.toString(origen.y+alto) + "})"; } public static String nombre(){ returnnombreClase; } protected void finalize() throws Throwable { origen = null; super.finalize(); } } //EJERCICIO: Implemente una clase RectanguloColor, basándose en la clase Rectangulo. //EJERCICIO: con un nuevo atributo color y sobrecargando el método toString classRectanguloColorextendsRectangulo { //EJERCICIO: ... publicStringtoString() { //EJERCICIO: Sobrecargue este método para que incluya en el String también el color } } classCuadradoColorextendsRectanguloColor { publicCuadradoColor(Punto p, int lado, int color){ super(p,lado,lado,color); } } public class Objetos{ staticRectangulo R1 = new Rectangulo(1,1,7,8); staticRectangulo R2 = new Rectangulo(new Punto(2,2),7,8); staticRectangulo R3 ; staticRectanguloColor RC; staticCuadradoColor C; public static void main(String args[]) throws IOException{ if (args.length< 4){ System.out.println("Uso: Objetos origen-x origen-y ancho alto"); System.exit(1); } int[] i = new int[4]; int j = 0; for(j=0; j <i.length; j++) i[j] = Integer.parseInt(args[j]); R3 = new Rectangulo(i[0],i[1],i[2],i[3]); RC= //EJERCICIO: Cree una instancia de rectángulo color RC //EJERCICIO: que añada a R3 el atributo de color. System.out.println("Nombre de la clase: " + Rectangulo.nombre()); System.out.println("Nombre de la clase de R3: " + R3.nombre()); System.out.println("Area de R3: " + R3.area()); System.out.println("R3: " + R3.toString()); System.out.println("RC: " + RC.toString()); //EJERCICIO: Invoque el método mover(10,10) sobre R3 //EJERCICIO: Invoque el método toString sobre R3 y RC //EJERCICIO: y visualicelos por pantalla el resultado //PREGUNTA: Se ha "movido" R3? y RC? Debería haberse "movido" RC? // Explique convenientemente este aspecto. C= //EJERCICIO: Cree un CuadradoColor con origen en // el punto: (2,2),alto=5,ancho=25 System.out.println("C: " + C.toString()); System.out.println("Area de C: " + C.area()); } } 1.5.2.-Fichero Relojes.java packagehola; importjava.text.*; importjava.util.*; classReloj extends Thread { intcuenta=0; public Reloj(String nombre, int cuenta) { super(nombre); this.cuenta=cuenta; } public void start() { Date h = new Date(); System.out.println(getName() + "-> " + DateFormat.getTimeInstance(3,Locale.FRANCE).format(h) + " Faltan " + cuenta + " seg. para la alarma"); super.start(); } public void run() { for (inti = 1; i<= cuenta; i++) { //EJERCICIO: Provoque un retraso de 1000 milisegundos } System.out.println(getName() + "Riiinnnng!!!"); } } public class Relojes { public static void main(String[] args){ //EJERCICIO: Cree dos instancias de la clase Reloj } } 1.5.3.-Fichero CountFile.java packagehola; import java.io.*; classCountFile { public static void main(String[] args) throwsjava.io.IOException, java.io.FileNotFoundException { int count = 0; InputStream is; String filename; if (args.length>= 1) { // EJERCICIO: Cree una instancia de FileInputStream, llamada is, // para leer del fichero que se especifica como args[0] filename = args[0]; } else { is = System.in; filename = "Input"; } while (is./* EJERCICIO: */!= -1) //EJERCICIO: utilice un metodo de FileInputStream para leer un caracter count++; System.out.println(filename + " has " + count + " chars."); } 1.5.4.-Fichero CopyFile.java packagehola; import java.io.*; classCopyFile { public static void main(String[] args) throwsjava.io.IOException, java.io.FileNotFoundException { byte[] buffer = new byte[256]; int count; if (args.length == 2) { // EJERCICIO: Cree una instancia de FileInputStream, llamada is, // para leer del fichero que se especifica como args[0] // EJERCICIO: Cree una instancia de FileOutputStream, llamada os, // para escribir en el fichero que se especifica como args[1] while ((count=is.read(buffer)) != -1) os.write(buffer,0,count); } else { System.out.println("Se necesitan dos argumentos"); } } } 1.5.5.- Fichero EntradaSalida.java package hola; import java.io.*; public class EntradaSalida{ public static void main(String args[]) throws IOException{ int j; byte[] buffer = new byte[80]; String filename, filename2; float f1 = (float) 3.1416; float f2 = 0; try { //E/S con InputStream y OutputStream System.out.println("Teclee una cadena"); j = System.in.read(buffer); System.out.print("La cadena: "); System.out.write(buffer,0,j); //Convertimos cadena de bytes a cadena de caracteres (2 bytes) String tira = new String(buffer,0,j); System.out.println("Otra vez la cadena: " + tira); //E/S con BufferedReader y PrintWriter //Conveniente con cadenas de caracteres (1 caracter = 2 bytes) BufferedReaderstdIn = new BufferedReader( new InputStreamReader(System.in)); PrintWriterstdOut = new PrintWriter(System.out); //E/S con InputStream y OutputStream System.out.println("Teclee un entero"); //EJERCICIO: Lea un entero por teclado e imprÌmalo en pantalla //E/S con BufferedReader y PrintWriter //Conveniente con cadenas de caracteres (1 caracter = 2 bytes) System.out.println("Teclee un nombre para un fichero"); //EJERCICIO: Lea de teclado una cadena para el nombre del fichero // y almacénela en la variable filename //E/S con ficheros y floats en formato numerico //EJERCICIO: Escriba un float en el fichero filename (en formato binario) //EJERCICIO: Lea el float que ha escrito en el fichero filename //EJERCICIO: Escriba el float que ha leido del fichero filename en pantalla //AYUDA: Mire el cÛdigo de un poco mas abajo... // Es parecido (pero en formato de texto) //E/S con ficheros y floats en formato de texto filename2=filename + ".txt"; System.out.println("Fichero: "+filename2); PrintWriter fout2 = new PrintWriter(new FileOutputStream(filename2)); BufferedReader fin2 = new BufferedReader( newInputStreamReader(new FileInputStream(filename2))); fout2.println(new Float(f1).toString()); fout2.flush(); f2=Float.valueOf(fin2.readLine()).floatValue(); System.out.println("Escrito y leido el float: " +f2+ " del fichero: " +filename2); } catch (IOException e) { System.out.println("Error en E/S"); System.exit(1); } } } 1.5.6.- Fichero DataIOTest.java /Se trata de escribir en un fichero con formato: // // 9.99 12 Java T-shirt // 9.99 8 Java Mug // 15.99 13 Duke Juggling Dolls // // y luego leerlo y sacarlo por pantalla // NOTA: los datos numéricos deben escribirse como "números" y // no como cadenas de caracteres. // NOTA: los Strings deben escribirse como cadenas de bytes // no como cadenas de caracteres (1caracter = 2 bytes) packagehola; import java.io.*; public class DataIOTest { public static void main(String[] args) throws IOException { //E/S con DataInputStream y DataOutputStream //Conveniente con datos numéricos (stream = secuencia de bytes) //Aconsejable para ficheros o sockets pero no para teclado y pantalla //EJERCICIO: Instancie un objeto de tipo DataOutputStream para escribir // en el fichero "invoice1.txt" DataOutputStreamout = //EJERCICIO: Instancie un objeto de tipo DataInputStream para leer // delfichero "invoice1.txt" DataInputStream in = //Los datos son: double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 }; int[] units = { 12, 8, 13, 29, 50 }; String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", "Java Pin", "Java Key Chain" }; //Un bucleparaescribir for (inti = 0; i<prices.length; i ++) { out.writeDouble(prices[i]); out.writeChar('\t'); out.writeInt(units[i]); out.writeChar('\t'); out.writeBytes(descs[i]); out.writeChar('\n'); } out.close(); //Un bucle para leer double price; int unit; String desc; double total = 0.0; try { while (true) { //EJERCICIO: leer el primer double del fichero sobre la variable price in.readChar(); // throws out the tab //EJERCICIO: leer el int siguiente sobre la variable unit in.readChar(); // throws out the tab //EJERCICIO: leer la cadena siguiente sobre la variable desc System.out.println("You've ordered " + unit + " units of " + desc + " at $" + price); total = total + unit * price; } } catch (EOFException e) { } System.out.println("For a TOTAL of: $" + total); in.close(); while (true){}; } }