Download Fundamentos de Programacion 1.- Desarrollar un mapa mental
Document related concepts
no text concepts found
Transcript
Fundamentos de Programacion 1.- Desarrollar un mapa mental conceptual que explique la materia de fundamentos de programación. R= 2.-Tomando como referencia la casa familiar donde viven, definan 5 clases diferentes con 3 objetos diferentes. R= Clase 1: Juguetes: Muñecos, Carritos, Rompecabezas Clase 2: Útiles: Calculadora,Libros,Lápiz Clase 3: Mascotas: Perro, Gato, Tortuga Clase 4: Electrodomesticos: Televisor, Radio, Aire Acondicionado Clase 5: Calzado: Tenis, Botas, Sandalias 3.-Defina los 6 conceptos fundamentales de la POO y de 3 ejemplos de cada uno de ellos. R= **Abstracción** La abstracción es el proceso de simplificar un problema complejo; en si son las características que permiten identificar las cualidades esenciales de un objeto. Al abordar la solución de un problema, uno no se abruma con cada uno de los detalles, mas bien, lo simplifica enfocándose tan sólo en los aspectos relevantes para la solución. Una abstracción se centra en la vista externa de un objeto, de un modo que sirva para separar el comportamiento esencial de un objeto de su implementación. Definir una abstracción significa describir una entidad del mundo real, no importa lo compleja que pueda ser. Características que permiten identificar las cualidades esénciales de un objeto Peso Color Forma Sabor Olor Textura Medidas **Encapsulación** La encapsulación o Encapsulamiento es la propiedad que permite asegurar que el contenido de la información de un objeto está oculta al mundo exterior: el objeto A no conoce lo que hace el objeto B, y viceversa. La encapsulación (también se conoce como ocultación de la información), en esencia, es el proceso de ocultar todos los objetos de un objeto que no contribuyen a sus características esenciales. La encapsulación permite la división de un programa en módulos. Estos módulos se implementan mediante clases, de forma que una clase representa la encapsulación de una abstracción. Encapsulamiento Es aquel que permite ocultar información del objeto al usuario La televisión, radio, celular, memoria, podemos ver el ensamblado pero no sus componentes Un registro en linea, no se da cuenta la programación que hay detrás de esta **Modularidad** La modularidad es la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en si y de las restantes partes. La modularización, consiste en dividir un programa en módulos que se puedan compilar por separado, pero que tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas. Por ejemplo, en C++ los módulos son archivos compilados por separado. **Herencia** Una de las propiedades más importantes de la programación orientada a objetos es la herencia. De hecho, algunos piensan que un programa que no emplea herencia no es un programa orientado a objetos. La herencia es aquella propiedad de la programación orientada a objetos que le permite a una clase, llamada clase derivada, compartir la estructura y el comportamiento de otra clase, llamada clase base. La naturaleza está llena de herencia. Todas las cosas vivas heredan las características o rasgos de sus antepasados. Una razón para usar herencia es que le permite reutilizar el código de un proyecto de programación anterior sin empezar de cero para reinventar el código. Muchas veces es posible reutilizar el código desarrollado para un programa en otro programa. Aunque el nuevo programa sea ligeramente diferente del anterior, la herencia permite construir uno que fue hecho con anterioridad. Herencia Es la que permite crear una clase en terminos de una clase existente Tenemos dos gatos, uno blanco y uno negro Nacio un gato negro con blanco **Jerarquía** La jerarquía es el orden de los elementos de una serie según su valor. De igual modo, es la disposición de personas, animales o cosas, en orden ascendente o descendente, según criterios de clase, poder, oficio, categoría, autoridad o cualquier otro asunto que conduzca a un sistema de clasificación. La jerarquía es una propiedad que permite una ordenación de las abstracciones. Las dos jerarquías más importantes de un sistema complejo son: estructura de clases y una estructura de objetos. Jerarquía Permite la organización de estructura de clase y de objeto De Politica: Presidente Gobernador Senadores y Diputados Presidente Municipal Delegado Jefe de Manzana **Polimorfismo** La quinta propiedad significativa de los lenguajes de programación orientados a objetos es el polimorfismo. Característica fundamental de la POO, que no es otra cosa que la posibilidad de construir varios métodos con el mismo nombre, pero con relación a la clase a la que pertenece cada uno, con comportamientos diferentes. Esta propiedad no suele ser considerada como fundamental en los diferentes modelos de los objetos propuestos, pero, dada su importancia, no tiene sentido considerar un objeto modelo que no soporte esta propiedad Polimorfismo es la propiedad que indica, literalmente, la posibilidad de que una entidad tome muchas formas. En términos prácticos, el polimorfismo permite a objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma operación de diferentes formas, según sea el objeto que se referencia en ese momento. Polimorfismo Es la propiedad que indica, literalmente la posibilidad de que una entidad tome muchas formas. Una mariposa de la misma especie puede tomar diferentes colores Un caracol puede ser de la misma forma puede tener un color especifico Un gato de la misma especie puede tener color distinto Links!! http://go.microsoft.com/fwlink/?LinkId=74005 http://go.microsoft.com/fwlink/?LinkId=74005 http://es.wikipedia.org/wiki/Herencia_(programaci%C3%B3n_orientada_a_objetos) http://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orientada_aobjetos) 4.-Explique ampliamente en que consiste la AOO, DOO, MOO, y POO, y de 3 ejemplos de su aplicacion. R= ***ANALISIS ORIENTADO A OBJETO*** Análisis Orientado a Objeto: En la actualidad son varias las metodologías de Análisis Orientado a Objeto que se han desarrollado, UML se perfila como estándar. Una de las primeras que surgieron, ya que ofrecen un enfoque relativamente simple e intuitivo. Esta es la metodología debida a Coad y Yourdon que tiene su continuación en un Diseño Orientado a Objetos. Una de las ventajas que ofrece el enfoque orientado a objeto es que permite mantener un lenguaje común entre las diferentes fases del ciclo de vida, evitándose el problema que surge en las metodologías estructuradas relativo al cambio de nomenclatura al pasar de una fase a otra por cambiarse de herramienta o modo de expresión o al realizar el estudio de los procesos y de los datos. Una de las razones de ese paso de metodologías estructuradas a las orientadas a objeto se deben en parte a que los sistemas a desarrollar son mucho más grandes y complejos, dándose cada vez más importancia a las interfaces de usuario. Por otra parte se consigue una complejidad funcional mucho menor y llegando a darse más importancia al modelado de los datos. En el conocimiento del mundo real, se emplean 3 métodos de organización: 1.- Se diferencia entre los objetos particulares y sus características (o atributos). Ej. Un árbol, su tamaño, y su relación con otros objetos 2.- Distinción entre objetos (como un todo) y las partes que los componen. Ej.: El árbol y las ramas que lo componen. 3.- La formación de, y la distinción entre clases de objetos. Ej. Clase de los arboles, de piedras... El modelo de AOO se basa en estos tres modelos de organización empleados en la vida real. Así, de un modelo simplificado, podemos mencionar como beneficios que aporta el AOO los siguientes: - Se pueden asumir mayores desafíos en el dominio del problema. Esto supone hacer más énfasis en el conocimiento del mismo. - Existe una mayor interacción entre el analista y el dominio del problema. Es decir, se organiza el análisis y la especificación utilizando los mismos métodos de trabajo que los que rigen el pensamiento humano. - Aumenta la consistencia interna de los resultados del análisis. Es decir, reduce el gap semántico entre las diferentes actividades del análisis y el diseño, tratando atributos y procesos como un todo. - Se construyen especificaciones fácilmente modificables proporcionando estabilidad frente a las modificaciones de los requerimientos. - Da reusabilidad de los resultados del Análisis, permitiendo definir familias de sistemas. - Da una representación consistente para el análisis y el Diseño mediante una representación continua para la expansión sistemática de los resultados del Análisis al Diseño. http://epcc.unex.es/modules.php?op=modload&name=Downloads&file=index&req=desc argar&lid=1857. Ejemplos EJEMPLO1: Cuando en una empresa se pide un sistema de base de datos, lo primero que se debe hacer es definir los datos que deben ir en el sistema, tanto datos de entrada como de salida. EJEMPLO2:cuando en la escuela nos piden alguna tarea de matematicas, lo primero que hacemos es definir cual debe ser el resultado. EJEMPLO3:cuando nos encargan una exposicion, lo primero es investigar sobre el tema a exponer. http://www.di.uniovi.es/~cernuda/pfc/aoo.pdf ***Diseño Orientado a Objetos*** El Diseño Orientado a Objetos se define como un diseño de sistemas que utiliza objetos auto-contenidos y clases de objetos. Características principales del Diseño Orientado a Objetos: Los objetos son abstracciones del mundo real o entidades del sistema que se administran entre ellas mismas Los objetos son independientes y encapsulan el estado y la representación de información La funcionalidad del sistema se expresa en términos de servicios de los objetos Las áreas de datos compartidas son eliminadas. Los objetos se comunican mediante paso de parámetros Los objetos pueden estar distribuidos y pueden ejecutarse en forma secuencial o en paralelo Ventajas del Diseño Orientado a Objetos: Fácil de mantener, los objetos representan entidades auto-contenidas Los objetos son componentes reutilizables Para algunos sistemas, puede haber un mapeo obvio entre las entidades del mundo real y los objetos del sistema Desarrollo Orientado a Objetos: El análisis, diseño y programación orientada a objetos están relacionados pero son diferentes El análisis orientado a objetos concierne al desarrollo del modelo de objetos del dominio de la aplicación El Diseño Orientado a Objetos trata del desarrollo del modelo del sistema orientado a objetos para implementar los requerimientos http://www.cs.buap.mx/~dpinto/semadoo/mario.pdf EJEMPLO1: se prodece al realizar un diseño del sistema. EJEMPLO2: buscamos alguna formula que nos ayude arealizar los calculos nesesarios. EJEMPLO3:procedemos a comenzar a estructurara la informacion de la manera mas entendible. ***MODELO ORIENTADO A OBJETOS*** El modelo orientado a objetos tiene un gran número de objetos autónomos con distinta funcionalidad disponibles en un sistema distribuido. Los objetos corren en espacios de direccionamiento disjuntos. A partir de rutinas de comunicación explicitas ellos invocan y usan la funcionalidad de los otros objetos. Se distinguen tres enfoques para combinar el modelo orientado a objetos con el paralelo/distribuido: o Paralelismo oculto dentro del objeto. o Procesos independientes de los objetos, que llaman a distintos métodos de distintos procesos. Se necesitan mecanismos de sincronización. Modelo Java Threads. o Cada objeto está asociado con uno o más procesos que ejecutan los accesos al objeto. A este modelo llamaremos Modelo Orientado a Objetos. Se ven dos clases de Modelo Orientado a Objetos: o Objetos Distribuidos. o Objetos Activos. http://weblidi.info.unlp.edu.ar/catedras/paralela/Teorias/Clase8-2005.doc. EJEMPLO1: El sistema de la empresa que vimos anteriormente, se hace un prototipo de ello para presentarse y se checa si cumple con los requerimientos. EJEMPLO2:se procede a crear una pequeña aplicacion de como debemos realizar esa tarea. EJEMPLO3:hacer una pequeña lamina de como quedara nuestra exposicion. ***Programación Orientada a Objetos*** La orientación a objetos es un paradigma de programación que facilita la creación de software de calidad por sus factores que potencian el mantenimiento, la extensión y la reutilización del software generado bajo este paradigma. La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio del problema, y a propiedades como la jerarquía o el encapsulamiento. El elemento básico de este paradigma no es la función (elemento básico de la programación estructurada), sino un ente denominado objeto. Un objeto es la representación de un concepto para un programa, y contiene toda la información necesaria para abstraer dicho concepto: los datos que describen su estado y las operaciones que pueden modificar dicho estado, y determinan las capacidades del objeto. http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/I_1.htm EJEMPLO1: Se procede a llevar el diseño a un lenguaje de programacion y codificarlo. EJEMPLO2:se procede con la ayuda de la formula a resolver el problema para obtener el resultado. EJEMPLO3: se procede a se realiza la exposicion teniendo ya los anteriores pasos. 5.-Ilustre cronologicamente el desarrollo historico de la programacion, explicando ampliamente cada uno de sus paradigmas 1943 Plankalkül (Konrad Zuse) En él se muestran claramente los recursos de los lenguajes para la organización de datos. Sus únicos valores atómicos eran bits. Los demás tipos de valores se construían a partir de bits individuales. 1954 FORTRAN Los lenguajes como FORTRAN miembros del denominado paradigma imperativo. En este paradigma, los conceptos centrales son el de estado (variable o región de memoria que puede consultarse y actualizarse) y el de instrucción (unidad de ejecución que, eventualmente, conduce a la modificación del estado). 1958 LISP Esta basado en el paradigma funcional en el que los programas se conciben como descripción de funciones, mientras que la ejecución de los mismos viene dada por una regla que permite aplicar esas funciones a sus argumentos. Dicho paradigma conduce, de esta forma, a un estilo más declarativo de comunicación con la máquina que, en el límite, prima la descripción del problema frente a la descripción de su solución. 1959 COBOL Los lenguajes que siguen el paradigma imperativo se centran en la acción, es decir, la computación se ve como una secuencia de acciones (especificadas paso a paso) que convierten los datos de entrada iniciales en los datos de salida finales 1962 Simula La programación orientada al objeto (OOP) es un paradigma programado que utiliza el " objeto" y sus interacciones para diseñar usos y programas de computadora. Las técnicas de programación pueden incluir características tales como encapsulación, modularidad, polimorfismo, y herencia. 1964 BASIC Esta basado en el paradigma imperativo, sólo soporta sentencias simples que modifican la memoria y efectúan bifurcaciones condicionales e incondicionales. Incluso cuando se añade una forma simple de abstracción procedimental, el modelo permanece básicamente sin cambiar 1972 - C La programación imperativa, en contraposición a la programación declarativa es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea. 1978 SQL El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE. 1983 - C++ Un lenguaje de programación multiparadigma es un lenguaje de programación que soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear "programas usando más de un estilo de programación". El objetivo de diseño de estos lenguajes es permitir a los programadores utilizar la mejor herramienta para cada trabajo, admitiendo que ningún paradigma resuelve todos los problemas de la forma más fácil y eficiente posible. Tal es el caso de lenguajes como C++, Delphi o Visual Basic, los cuales combinan el paradigma imperativo con el orientado a objetos. Incluso existen lenguajes multiparadigma que permiten la mezcla de forma natural, como en el caso de Oz, que tiene subconjuntos (particularidad de los lenguages lógicos), y otras características propias de lenguages de programación funcional y de lenguages de programación orientados a objetos. 1990 Python Multiparadigma Es un lenguaje de programación que que soporta mas de un paradigma, es decir, permite "crear programas usando mas de un estilo de programación. 1991 Java Paradigma orientado a Objetos: Es un paradigma de programación que utiliza objetos y sus interacciones para diseñar aplicaciones y programas de computadora. 1993 Ruby 1997 Perl Multiparadigma Es un lenguaje de programación que que soporta mas de un paradigma, es decir, permite "crear programas usando mas de un estilo de programación. 2000 C Sharp Es un paradigma de programación que utiliza objetos y sus interacciones para diseñar aplicaciones y programas de computadora http://es.wikipedia.org/wiki/Programaci%C3%B3n_multiparadigma http://es.wikipedia.org/wiki/C%2B%2B http://es.wikipedia.org/wiki/Historia_de_los_lenguajes_de_programaci%C3%B3n http://es.wikipedia.org/wiki/Historia_de_los_lenguajes_de_programación http://es.wikipedia.org/wiki/Python http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java http://es.wikipedia.org/wiki/Ruby http://es.wikipedia.org/wiki/C_Sharp http://es.wikipedia.org/wiki/BASIC http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Pascal http://es.wikipedia.org/wiki/C%2B%2B 6.-Explique ampliamente en que consiste la complejidad del software y como ayuda la POO para resolverlo La complejidad del Software. Al observar sistemas complejos sociales como una gran empresa, los naturales como el universo y los sistemas creados por el hombre como el computador, se observa que exhiben una jerarquía de clases (conceptos) y otra de objetos (instancias). En una empresa donde conjuntos de personas forman un departamento y un conjunto de departamentos forman divisiones se describe la forma canónica de un sistema complejo que exhibe dos jerarquías: Una jerarquía de clases y otra jerarquía de objetos, donde cada objeto es una instancia de la una clase. Este es el modelo del cual se apropia el análisis y diseño orientado a objetos para desarrollar sistemas donde hay gran cantidad de software. <> http://es.wikipedia.org/wiki/Programaci%C3%B3n http://www.mat.uson.mx/mireles/FundamentosModeloObjetos_archivos/frame.htm#slid e0005.htm 7.-Tomando como referencia 6 lenguajes de programacion realize una tabla descriptiva que ilustre las ventajas y desventajas de cada uno de ellos ***JAVA*** - Es un lenguaje relativamente sencillo y fácil de aprender. - Es muy productivo, con poco código puedes hacer mucho más que la misma cantidad en código de C ó C++ - Nos permite organizar el código en entidades como las clases compuestas de datos y funciones, y a través de la característica de la herencia podemos organizar las clases en jerarquías. Desventajas - Java es lento comparado con C ó C++, pero en algunas tareas es casi igual de veloz. - Java no permite el acceso directo a todos los recursos de hardware de la PC. Aunque esto también podría ser una ventaja ya que así es más fácil. - Actualmente hay tantas bibliotecas de clases para java que es casi imposible conocer para que sirven todas y cada una de ellas. ***C*** Es un lenguaje muy flexible · Muy apropiado para controlar rutinas hechas en ensamblador · Permite general programas de fácil modificación · Lenguaje predominante bajo cualquier máquina UNIX · Muy veloz y potente, lo que permite un software efectivo desventajas · No dispone de editor propio · Se requiere más tiempo en conseguir el ejecutable, porque cada vez compila todo el fichero. · La modularidad en C tiende a incrementar el tiempo de compilación · Poco legible y eminentemente críptico ***c#*** Compila a código intermedio (CIL) independiente del lenguaje en que haya sido escrita la aplicación e independiente de la máquina donde vaya a ejecutarse Recolección de basura automática Eliminación del uso punteros, en C# no se necesitan Desventajas - Requiere más tiempo en conseguir el ejecutable, porque cada vez compila todo el fichero. - No dispono de un propio editor - Es poco legible ***PASCAL*** - Pascal es un lenguaje muy simple, - se estudia en las carreras porque es una forma facil de aprender las primeras bases de la programación. - La sintaxis de Pascal es sencilla, y tiene las funciones basicas de todos los lenguajes. te enseña a "pensar" como programar de una forma estructurada. Desventajas - te enseña a "pensar" como programar de una forma estructurada. - Pascal solo se utiliza para aprender, no para programar ***cobol*** Autodocumentado Simple No propietario Eficiente Universal Abierto Completo Escalable Maduro Portable Fiable y probado Desventajas - Es poco universal. - Es muy suceptible a las variantes. ***BASIC*** Es un lenguaje Posee una curva de aprendizaje muy rápida. Integra el diseño e implementación de formularios de Windows. Permite usar con suma facilidad la plataforma de los sistemas Windows. El código en Visual Basic es facilmente migrable a otros lenguajes. Acostumbra a los desarrolladores a programar con eficiencia. Desventajas No permite programación a bajo nivel ni incrustrar secciones de código en ASM Sólo permite el uso de funciones de librerías dinámicas (DLL) stdcall. Algunas funciones están indocumentadas (Sin embargo esto ocurre en muchos lenguajes). Es un lenguaje basado en objetos y no orientado a objetos. No maneja muy bien los apuntadores de memoria. No soporta tratamiento de procesos como parte del lenguaje. - No avisa de ciertos errores o sentencias. http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n 8.-Tomando como referencia el banco de programas en java del grupo, ejemplifique con un programa sencillo la aplicacion de los 6 conceptos fundamentales de la programacion orientada a objeto Encapsulamiento: Es la característica que permite que un objeto oculte información esencial al usuario, con esto se logra mejoras en la operación del programa así como niveles de seguridad. La Interfaz será la "máscara" de toda esa información no disponible al usuario. Ejemplo de Encapsulación class Fecha { public int dia ; public int mes ; public int anno ; } ... Fecha f = new Fecha() ; f.dia = 34 ; f.mes = 14 ; f.anno = 0 ; ... class Fecha { private int dia ; private int mes ; private int anno ; } ... Fecha f = new Fecha() ; f.dia = 34 ; ==> ERROR f.mes = 14 ; ==> ERROR f.anno = 0 ; ==> ERROR ... int d ; d = f.dia ; ==> ERROR ... Abstracción: Característica que permite identificar las cualidades esenciales del objeto. Ejemplo: Al usuario convencional no le interesa si el programa está desarrollado en técnicas avanzadas de programación o bajo un lenguaje en específico, porque lo esencial es el programa. La abstracción varía en cada analista de software pues cada uno tiene distintos conceptos de la realidad. abstract class ConfiguracionSistema{ static boolean VersionEvaluacion; static int diasUtilización; static final int maxDias; static String ubicacion; static String paginaInicial; } Polimorfismo Esto representa que las funciones son aplicables a todos los objetos pero no son aplicables de la misma forma. Código: class animal { public void breathe() { System.out.println("Respirar..."); } } class pez extends animal { public void breathe() { System.out.println("Burbujear..."); } } Herencia La herencia permite crear una clase nueva (subclase o clase derivada) que tenga el mismo comportamiento que otra (superclase o clase base) y además extienda o adapte ese comportamiento a unas necesidades específicas. Jerarquía La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona las clases de manera jerárquica; una clase padre o superclase sobre otras clases hijas o subclases. public class SubClase extends SuperClase { // Contenido de la clase } Por ejemplo, creamos una clase MiPunto3D, hija de la clase ya mostrada MiPunto: class MiPunto3D extends MiPunto { int z; MiPunto3D( ) { x = 0; // Heredado de MiPunto y = 0; // Heredado de MiPunto z = 0; // Nuevo atributo } } La palabra clave extends se utiliza para decir que deseamos crear una subclase de la clase que es nombrada a continuación, en nuestro caso MiPunto3D es hija de MiPunto. ENLACES http://sistemas.itlp.edu.mx/tutoriales/fundamentosdeprog/t15.htm http://foro.elhacker.net/java/ejercicios_java_teoriaejemplos-t34891.0.html http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/II_6.htm http://lsi.vc.ehu.es/mikell/docencia/Programacion-II/Transparencias/2Gaia/T2ModularidadJava0607.pdf 9.-Tomando como referencia la practica 1 explique ampliamente en que consiste el lenguaje java y como se utiliza ¿Qué es Lenguaje Java (J2SE)? Java es un lenguaje de programación orientada a objetos creado por Sun. La plataforma J2SE (Java 2 Standard Edition) es la base de la tecnología Java pues incluye las herramientas de desarrollo, la máquina virtual JVM y la documentación de interés para el programador. Java es un lenguaje de programación orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria. Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también es posible. La implementación original y de referencia del compilador, la máquina virtual y las librerías de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de software libre. Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java todavía no es software libre). ¿En qué consiste el Lenguaje Java ? En el Curso de Java (J2SE) se aborda el aprendizaje del lenguaje Java; primero se estudia la Programación Orientada a Objetos para tener bien asimilada la base del paradigma de Programación que utiliza Java. En sesiones posteriores, se estudiarán las distintas tecnologías que ofrece Java (RMI, JFC, AWT). Aprenda Java y la plataforma J2SE de la forma más completa gracias al Curso de Java de Ciberaula. Para desarrollar programas en Java es suficiente con instalar el paquete JDK de Sun, que es de libre distribución. En el site de Sun podemos encontrar toda clase de información relacionada con Java: Ejemplos de programas escritos en Java, tutoriales, documentación, bugs conocidos y su solución, etc.. La dirección base es : www.sun.com La ultima version disponible hasta la fecha es la JDK 1.2 Pasos para crear un programa en Java - Aplicaciones " Escribir el programa fuente en cualquier editor y guardarlo con extensión .java " Compilar el fichero fuente mediante: javac miPrograma.java .Esto genera el fichero .class " Ejecutarlo (interpretar los byte-code) : java miPrograma - Applets " Escribir el programa fuente en cualquier editor y guardarlo con extensión .java " Compilar el fichero fuente mediante: javac miProgramaApplet.java " Escribir la pagina web que contendra al applet y guardar el codigo con extension .html " El codigo minimo será: 2 posibilidades para ejecutar el applet: Lanzar un navegador y cargar la pagina html, o bien - Usar el programa provisto por Sun para ver applets: appletviewer miProgramaApplet.html Un ejemplo de herramientas básicas para comenzar a programar en lenguaje JAVA podría ser: 1.- Editor de código multilenguaje y con utilidades de edición y detección automática de errores. Un muy buen editor con estas propiedades y muchas más es ED for Windows v3.80 (www.getsoft.com) pero existen muchos otros y casi todos de libre distribución. 2.- JDK1.1.x, con el que podemos compilar y probar las aplicaciones y applets realizados. 3.- Documentación HTML de las clases JAVA. Además de lo arriba indicado, es aconsejable trabajar con paquetes de componentes que no pertenecen a los básicos de Java, como puede ser swing o symbeans. Estos componentes o beans proporcionan utilidades y facilidades añadidas al paquete básico de jdk. Otra posibilidad para desarrollar en JAVA es utilizar una herramienta Visual como Visual Cafe o V++. Estas herramientas suponen un entorno integrado de programación con módulos editor, de diseño visual, compilador, depurador, etc. Además proporcionan componentes propios especialmente útiles en diseño de interfaces gráficas. http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n_Java http://www.dcc.uchile.cl/~lmateu/Java/Apuntes/appletim.htm 10.-Ilustre de manera inteligente 5 chistes que hablen sobre la programacion http://www.quechistes.es/ http://www.lahiguera.net/