22
TAP día 1 13/09/2012 [email protected] http://gtts.ehu.es/German Sept.2012 El resto del curso seguirá el camino que se irá marcando a través de los tutoriales de Java en la web de Oracle http://download.oracle.com/javase/tutorial/

TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

TAP día 113/09/2012

[email protected]

http://gtts.ehu.es/German

Sept.2012

El resto del curso seguirá el camino que se irá marcando a través de los tutoriales de Java en la web de Oracle

http://download.oracle.com/javase/tutorial/

Page 2: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

1.- ¿Dónde esta Java en el universo del los lenguajes?...

Situando el lenguaje en diferentes aspectos a considerar antes de empezar

[email protected]

http://gtts.ehu.es/German

Page 3: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

FORTRAN

PASCAL

COBOL

APLPYTHON

C

FORTH

TCL

C#

JAVASCRIPT

ADA

PROLOG

[email protected]

http://gtts.ehu.es/German

LISP

JAVA

RUBY

BASIC

PERL

PHP

Page 4: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

La Programación ES y VIENE DE las Matemáticas… (como parte de la computación)

Del concepto de calculabilidad efectiva a una

Clasificación general de lenguajes

Lenguajes Alonzo

Church

Alan

Turing

CálculoCálculo LambdaLambdaMáquinaMáquina dede TuringTuring

Sin olvidar las

funciones

recursivas de

Herbrand-Gödel"

Euclides (Método axiomático), Aristóteles(Lógica formal), Muhammad ibn Musa Al’Khowarizmi (Algorítmo)…

HILBERT

[email protected]

http://gtts.ehu.es/German

Funcionales

•Lisp

•Scheme

•ML

•Hope

•CLOS

•...

Imperativos

•Fortran

•Cobol

•Pascal

•C

•...

Lógicos

•Prolog

•...O/B objetos

•Object Pascal

•C++

•Java

•...

Frameworks

•Ruby on Rails

•...

Page 5: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

60

70

Fortran

Algol 68

Mesa

Algol 60

PascalSimula 67

CSP*

PascalConcurrente

Distributed

CPL*

BCPL

C

BASIC

sh, csh,ksh,..Prolog

Lisp

Scheme

ISWIM*

ML

A

B

[email protected]

http://gtts.ehu.es/German

80

90

Smalltalk-80Modula-2

Oberon

CSP* DistributedProcesses

AdaC++

JAVA

Visual BASIC

PERL TCL

Python

JavaScript

RExx

“C++ ++ --”

Standard ML

Common Lisp

CLOS

Page 6: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Ordenación de lenguajespor uso

[email protected]

http://gtts.ehu.es/German

ABC, AD, Algol, Alpha, Applescript, AspectJ, Beta, Boo, C shell, cg,

Ch, Clean, cT, Curl, Dylan, Eiffel, Factor, Felix, Focus, Icon, IDL,

Inform, Io, MAD, Magic, Maple, Mathematica, Modula-2, MOO,

MUMPS, Oberon, Occam, Oz, Pike, PILOT, Postscript, PowerBuilder,

Progress, Q, REALbasic, Rebol, S-lang, Scala, SIGNAL, SPSS, TOM,

VBScript, Verilog, VHDL, XSLT

Page 7: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

A Java se le ha “acusado” desde un principio de ser LENTO.

•Al principio era cierto.

Relación 4/1 frente a C

Razón principal: lenguaje interpretado

Otras razones: recogida de basuras, mecanismos de seguridad, etc

•Desde hace unos años es comparable a C, dependiendo de en qué tareas. Ciertamente no es el mejor caso el del

cómputo intensivo (estimaciones de un estudio particular 2004).

•En gráficos bate a C

•Relación media: 1.4/1 frente a C si excluimos gráficos

•En cálculo intensivo la diferencia es más acusada

•Actualmente Java es más rápido que C en muchas tareas (particularmente gráficos) y similar en los peores casos

(cómputo intensivo)

•Máquina HotSpot

[email protected]

http://gtts.ehu.es/German

Tiempo de ejecución Java/C

3,483256098

1

10

100

0 2000 4000 6000 8000 10000

•Máquina HotSpot

•Java (los lenguajes sobre máquinas virtuales en general) serán los más rápidos en el futuro (ante cómputos complejos,

no para el caso de algoritmos muy “cerrados”)

Ejemplo peor caso Java vs. C (14ago08)

(cálculo de PI por MonteCarlo)

•La relación de tiempo de ejecución es del orden de 3,5 a favor de C

•La relación de tiempo de preparación del experimento a partir del código tomado de

http://husnusensoy.blogspot.com/2006/06/c-vs-java-in-number-crunching.html

ha sido del orden de 120 a favor de Java

•JAVA: copiar, pegar, compilar, ejecutar y listo en unos segundos.

•C: copiar pegar, compilar, corregir fuente, compilar, ejecutar, observar

falta de resolución de la función “time”, ir a la bibliografía para resolver el

tema, no encontrar solución, reescribir con itreraciones para obtener

tiempos mayores, compilar, resolver problemas de apuntadores, compilar,

ejecutar, resolver problemas de violación de segmentos, compilar, ejecutar

y listo en una hora a causa de las iteraciones en la búsqueda de precisión.

Falta de precisión en la medida de C

Page 8: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

La máquina virtual.

"Write Once, Run Anywhere"

[email protected]

http://gtts.ehu.es/German

•Una idea novedosa, pero no del todo: cierta similitud con los lenguajes con código intermedio.

•Sí es novedoso el enfoque de emulador de máquina.

•Ventajas:

•se pueden incluir con facilidad técnicas que en un diseño hardware pueden resultar prohibitivas por su complejidad técnica,

•la posibilidad de evolución es mucho más sencilla al no requerir cambios de hardware

•permite utilizar las "plataformas" existentes sin implicar una ruptura con los sistemas actuales (existe la máquina real pero…).

• el diseño es público y la "implementación" es privada (especificaciones técnicas que debe complir toda JVM. ).

•Distintos comportamientos en términos de velocidad y uso de memoria

Page 9: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

2. Desarrollo en Java.

Ideas globales y material necesario

[email protected]

http://gtts.ehu.es/German

Page 10: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

El JDK.

[email protected]

http://gtts.ehu.es/German

Page 11: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

Herramientas de desarrollo:

javac (compilador), java (máquina virtual), jdb (debugger),

javadoc (documentador), jar (compactador), javap

(desensamblador), extcheck (verificador de .jar), etc.

Java Runtime Environment.

Máquina virtual, Biblioteca de clases y todo lo necesario para

dar soporte a aplicaciones [compiladas] java.

Librerias adicionales para desarrollo.

Cabeceras para métodos nativos.

V+A

V+A

Instalando el JDK.

[email protected]

http://gtts.ehu.es/German

Con•el directorio “bin” en el PATH, y•la variable JAVA-HOME=<path de jdk1.6.0_07>

podemos desarrollar nuestro primer programa.

//

// Aplicación ejemplo "HolaMundo"

//

public class HolaMundo {

public static void main(String[] args) {

System.out.println("Hola, mundo");

}

} Prompt> javac HolaMundo.java

Prompt> java HolaMundo

Hola, Mundo

Prompt>

Page 12: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

Compilar y ejecutar

[email protected]

http://gtts.ehu.es/German

Page 13: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

El “Manifest.mf” debe situarse en una

Uso de ficheros “Jar”

[email protected]

http://gtts.ehu.es/German

El “Manifest.mf” debe situarse en una

sub-carpeta denominada “meta-inf”

Page 14: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

El “bin”

[email protected]

http://gtts.ehu.es/German

Page 15: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

bin:Javadoc

La documentación del código desarrollado esta ligada al

mismo y se genera automáticamente mediante javadoc

[email protected]

http://gtts.ehu.es/German

Page 16: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

Core Java 2 (Java1.3)

Contenido de C:\...\jdk1.3\jre\lib\rt.jar

jre/lib - biblioteca “rt”

[email protected]

http://gtts.ehu.es/German

2008: mucho más de lo mostrado aquí

Page 17: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

http://java.sun.com/javase/6/docs/api/

Documentación de bibliotecas

[email protected]

http://gtts.ehu.es/German

Page 18: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

Imagen global del marco de trabajo Java

[email protected]

http://gtts.ehu.es/German

(VER SAUTRELA)

Page 19: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

Desensamblado y decompilación

C:>javap -c HolaMundo

Compiled from "HolaMundo.java"

public class HolaMundo extends java.lang.Object{

public HolaMundo();

Code:

0: aload_0

1: invokespecial #1; //Method java/lang/Object."<init>":()V

4: return

public static void main(java.lang.String[]);

Code:

0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;

3: ldc #3; //String Hola, mundo

5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

[email protected]

http://gtts.ehu.es/German

(Decompilación: probar con Jode y SAUTRELA)

“Ofuscacion”

5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

8: return

}

Page 20: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

ECLIPSE (.org)

Comunidad de desarrollo en código abierto

Proyectos enfocados al desarrollo de una plataforma de marcos

extensibles, herramientas y ejecutables para construir, implantar

y gestionar software a lo largo de todo su ciclo de vida.

Un “vibrante” y “amplio” ecosistema de grandes fabricantes de

tecnología, innovadoras start-ups, universidades, instituciones de

investigación y particulares.

IDEs de ayuda al desarrollo

[email protected]

http://gtts.ehu.es/German

NETBEANS(.org)

Un IDE de código abierto gratis para desarrolladores de

software. Proporciona todas las herramientas para crear

aplicaciones profesionales de sobremesa, de empresa, web y

móviles, con Java, C/C++, y Ruby. NetBeans es fácil de

instalar y usar de inmediato, y corre en numerosas

plataformas incluyendo Windows, Linux, Mac OS X y Solaris.

Page 21: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

Una defensa de Netbeans frente al resto.(desde el desconocimiento del resto)

- El slogan de Netbeans 6 es “The only IDE you need!”, y probablemente no sea sólo un slogan sino una verdad absoluta.

- El competidor más importante es Eclipse, aunque también están en el juego Jbuilder (Borland) y Java Studio (Creator/ Entrprise).

-Jbuilder fue importante hasta hace un par de años al destacar en varios aspectos (p.ej. integración de UML), pero los esquemas de desarrollo en comunidad de Netbeans y Eclipse lo han superado (sin dejar de ser un buen entorno)

- Java Studio es el IDE de SUN. Los padres de la tecnología Java han luchado siempre por liderar la oferta

IDEs de ayuda al desarrollo

[email protected]

http://gtts.ehu.es/German

tecnología Java han luchado siempre por liderar la oferta de entornos de desarrollo para Java con interesantes iniciativas y con dedicación de medios, pero su éxito ha sido más bien escaso. Su propia consciencia de este hecho les ha llevado, desde hace varios años, a apoyar Netbeans “oficialmente” (es el IDE descargable como “bundle” con el kit de desarrollo de la web de SUN) sin que hayan renunciado a su propio sistema (¿?)

- Eclipse puede ser comparable a Netbeans (¿superior?), pero su modelo de desarrollo es comercial, por lo que nos podemos encontrar con que una determinada capacidad que nos resulte interesante sea de pago (Actualmente no se exige el “ánimo” comercial y se sigue un esquema mixto)

-La comparación de netbeans.og frente a eclipse.org muestra netamente una mejor atención en la primera, así como la aplicación de las últimas técnicas web (Web 3.0)

Page 22: TAP día 1gtts.ehu.es/German/Docencia/1213/TAP/Intro.pdf · BASIC PERL PHP. La Programación ES y VIENE DE las Matemáticas… (como parte de la computación) Clasificación general

Diag. de clasesDiag. de clasesDiag. de clasesDiag. de clases

Diag. de casos de usoDiag. de casos de usoDiag. de casos de usoDiag. de casos de uso

Desarrollo mediante modelado: UML

[email protected]

http://gtts.ehu.es/German

Diag. de secuenciaDiag. de secuenciaDiag. de secuenciaDiag. de secuencia

Diag. de estadosDiag. de estadosDiag. de estadosDiag. de estadosDiag. de actividadDiag. de actividadDiag. de actividadDiag. de actividad Diag. de implantaciDiag. de implantaciDiag. de implantaciDiag. de implantacióóóónnnn