Curso JAVA 
 Unidad 2: "Aspectos básicos del lenguaje"

Objetivos de la Unidad:  


APIs:

 

2.1 Referencias bibliográficas:
 


2.2 Máquina Virtual Java

Los ficheros compilados .class contienen código máquina (bytecodes). Sin embargo sobre PC no es un código máquina Intel, sino que es un código máquina Java. Por ello se dice que Java es interpretado por p-code.
Una lista de máquinas virtuales Java con los enlaces para descargarlas se puede encontrar en
http://www.nomagic.com/magicdrawuml/jvm_list.html

Para una introducción de cómo son los bytecodes del lenguaje máquina de Java se puede consultar
http://www.javaworld.com/javaworld/jw-09-1996/jw-09-bytecodes.html. Una lista de los opcodes se puede encontrar en http://www.meurrens.org/ip-Links/Java/codeEngineering/jonMeyer/index3.html
Al igual que en otros lenguajes Java es decompilable si no se toma ninguna precaución. Se puede encotrar más información al respecto en
http://www.devdaily.com/java/edu/pj/pj010021/

Java compilado en código nativo

La característica de lenguaje p-code ofrece unas características de portabilidad fabulosas. Sin embargo es posible que en algunos casos sea necesaria una velocidadd de ejecución superior.
Existen compiladores compiladores que generan ejecutables nativos como JET (
http://www.excelsior-usa.com), como JOVE (http://www.instantiations.com) para procesadores Intel o como FastJ (http://www.ddi.com/products/fastjdescription.htm) que genera código nativo para sistemas embedded sobre diversos procesadores. Otra vía es generar código C a partir de Java. Es esta línea está Toba. Se puede obtener en http://www.cs.arizona.edu/sumatra/toba/

Una nueva línea emergente es la de los procesadores que soportan Java. Sun ha anunciado que en un futuro habrá una interesante gama de procesadores que ejecutarán el código máquina de Java en modo nativo. En esta línea también está Patriot Scientific Corp. (
http://www.ptsc.com/) que ofrece ya Java en silicio.


Multiplataforma

Java está disponible para numerosos sistemas operativos y plataformas. Una recopilación de ellas se puede encontrar en http://www.geocities.com/marcoschmidt.geo/java.html

La utilización de Java en UNIX, Win95 y NT es bastante similar. Con el comando javac se compila y con java, jre o jview (JVM de Microsoft) se invoca la ejecución. Como regla general se puede decir que lo que en formato MS-DOS son "punto y coma" (separaciones en PATH o CLASSPATH) en UNIX son "dos puntos".

IBM ha desarrollado un producto Open Source denominado Jikes (
http://www.jikes.org) que consiste en un compilador de Java.

Para AS/400 la sintaxis es distinta. IBM ha puesto en marcha una iniciativa Open Source denominada JTOpen que permite la integración desde Linux, Unix o Windows con la plataforma AS mediante Java. Puede encontarse una introducción en http://www.ddj.com/articles/2000/0065/0065i/0065i.htm. La información general del AS/400 Toolbox for Java está en http://www.as400.ibm.com/toolbox.

Para Apple Macintosh en
http://www.apple.com/java se explica cómo operar con el MRJ (Traducido: JDK para Mac)

Para Silicon Graphics la página de JDKs Java está en http://www.sgi.com/developers/devtools/languages/java.html

Compaq juega la carta de la anticipación en su misma línea de siempre. Desarrolló Java de 64 bits antes que Sun tal y como se indica en http://www.compaq.com/java

Y en caso de no disponer de Java en un momento dado se pueden utilizar compiladores Java vía Web tal como http://javaboutique.webdeveloper.com/compiler.html

Nota para el resto de apartados de esta Unidad    

2.3 Tipos de datos primitivos  

Boolean  

Char  

Tipos enteros
 


Tipos coma flotante  

          ...
          double x = 1234.1234
          DecimalFormat df = new DecimalFormat("#,##0.##");
          System.out.println(df.format(x));
          ...
          
          La salida es según nuestro
Locale
          
1.234,12

          También podría separarse la creación del formateador respecto a la selección del patrón a aplicar:

     ...
     double x = 1234.1234
     DecimalFormat df = new DecimalFormat();
     df.applyPattern("#,##0.##");
     System.out.println(df.format(x));
     ...


Para utilizar directamente la puntuación de la localización del sistema (en nuestro caso cambio de puntos por comas y viceversa) podría utilizarse applyLocalizadPattern("#.##0,##")

Para obtener un formateador localizado se puede utilizar:

          NumberFormat nf = NumberFormat.getInstance(Locale.ITALIAN);

Para el ámbito español se puede utilizar
Locale.ITALIAN o Locale.FRENCH

No siempre es necesario utilizar un patrón. Para establecer el mínimo y el máximo número de decimales a mostra la clase NumberFormat (base de DecimalFormat) dispone de los métodos setMinimumFractionDigits(int) y setMaximumFractionDigits(int)

Tipos no primitivos (Reference types)  
 

Strings

    public class PruebaCadenas extends Applet
    {
        public void paint( Graphics g )
        {
            String s="Hola";
            char bs[];

            bs = s.toCharArray(); // pasa de String a char[]
            bs[2] = 'z';

             // String.valueOf(obj) convierte obj a String

            g.drawString( String.valueOf(bs), 25, 25 );

             // se imprime "Hoza"

        }
    }


2.4 Control de flujo y operadores

Los lenguajes C, C++, JavaScript y Java utilizan la misma sintaxis para las estructuras de control de flujo (estructuras algorítmicas)

Estructura alternativa en pseudocódigo:

Si condicion entonces
    
acción 1
sino
    
acción 2
fin si

Estructura alternativa en Java (estilo Whitesmith, tipo "industrial"):

if (condición)
{
    acción 1
}
else
{
    acción 2
}


Estructura alternativa en Java (estilo Kernel, tipo "académico"):

if (condición){
    acción 1
}else{
    acción 2
}

Estructura repetitiva en pseudocódigo:

mientras condicion hacer
    
acción
fin mientras

Estructura repetitiva en Java (estilo Whitesmith):

while (condición)
{
    acción 1
}

Estructura repetitiva en Java (estilo Kernel):

while (condición){
    acción 1
}

Otras

Las estructuras Para i = 0 hasta n-1 paso p corresponden a
for(i = 0; i < n; i+=p)
Las estructuras tipo Do Case corresponden en Java a la
switch(opcion){...


Operadores relacionales y lógicos:

if (x == 3)                 // Si x = 3 entonces
if (x != 3)                 // Si x <> 3 entonces
if (x > 4 && y <= 3)         // Si x > 4 Y y <= 3 entonces
if (x > 4 || y < 3)         // Si x > 4 O y < 3 entonces
if (!(x > 4 && y < 3))      // Si NO(x > 4 Y y < 3) entonces


2.5 Arrays
 
 


Nuevos operadores respecto C
 
 

    if (x instanceof String)
    {...

 
 

 

Lenguajes de script en Java

Hay varias iniciativas de scripting basado en Java. Rhino (http://www.mozilla.org/rhino) es un intérprete de JavaScript desarrollado en Java que permite ser utilizado tanto desde un shell propio con posibilidad de usar classes de Java como incorporar en nuetro código Java un objeto intérprete de JavaScript. En la Unidad 12 se muestra un ejemplo de como evaluar expresiones de forna dinámica.


2.6 Programas tipo cónsola que no se detienen
 
 

  • // HolaMundo
     
     

    class HolaMundo
    {
        public static void main(String args[])
        {
            String a;

            a = "pep";

            System.out.println("Hola mundo");
            System.in.read();

        }
    }
     

     

  • ¿Por qué del error? Las funciones pueden retornar valores o lanzar excepciones
       

  • int read() throws IOException
  •  

  • // HolaMundo

    class HolaMundo
    {
        public static void main(String args[]) throws Exception
        {
            String a;
            a = "pep";

            System.out.println("Hola mundo");
            System.in.read();
        }
    }
     
     

  •  


    Unidad Anterior    Unidad siguiente


    Copyright  DENVIR STUDIOS ® 

    Lima - Perú, 2002

    Hosted by www.Geocities.ws

    1