Java nace y da sus primeros pasos en 1991 formando parte de un proyecto de desarrollo de soporte software para electrónica de consumo (frigoríficos, lavadoras), llevado a cabo por un equipo de SUN llamado Green Team (Patrick Naughton, James Gosling y Mike Sheridan).
Este primer enfoque le da a Java una de sus más interesantes características: La portabilidad, dado que Java tenia que funcionar en numerosos tipos de CPUs, basándose en el lenguaje de programación C++ y por tanto se pensó para ser independiente de la plataforma sobre la que funcione. Esta característica es muy posiblemente la que ha permitido a Java convertirse actualmente en el lenguaje por excelencia para la creación de aplicaciones en Internet.
Descripción del Lenguaje
JDK 1.0 (23 de enero de 1996)
JDK 1.1 (19 de febrero de 1997). Una reestructuración intensiva del modelo de eventos AWT (Abstract Windowing Toolkit), clases internas (inner classes), JavaBeans, JDBC (Java Database Connectivity), para la integración de bases de datos, RMI (Remote Method Invocation).
J2SE 1.2 (8 de dieciembre de 1998 - Nombre clave Playground. Esta y las siguientes versiones fueron recogidas bajo la denominación Java 2 y el nombre "J2SE" (Java 2 Platform, Standard Edition), reemplazó a JDK para distinguir la plataforma base de J2EE (Java 2 Platform, Enterprise Edition) y J2ME (Java 2 Platform, Micro Edition).
Versiones de Java
J2SE 1.3 (8 de mayo de 2000) - Nombre clave Kestrel.
J2SE 1.4 (6 de febrero de 2002) - Nombre Clave Merlin. Este fue el primer lanzamiento de la plataforma Java desarrollado bajo el Proceso de la Comunidad Java como JSR 59. Los cambios más notables fueron: comunicado de prensalista completa de cambios.
Versiones de Java
J2SE 1.5 (30 de Septiembre de 2000) - Nombre clave: Tiger. (Originalmente numerado 1.5, esta notación aún es usada internamente).
Java SE6 (11 de Diciembre de 2006) - Nombre clave Mustang. Estuvo en desarrollo bajo la JSR 270. En esta versión, Sun cambió el nombre "J2SE" por Java SE y eliminó el ".0" del número de versión.
Versiones de Java
Java SE 7 Nombre clave Dolphin. En el año 2006 aún se encontraba en las primeras etapas de planificación. Su lanzamiento fue en julio de 2011. Soporte para XML dentro del propio lenguaje.
Un nuevo concepto de superpaquete. Soporte para closures. Introducción de anotaciones estándar para detectar fallos en el software. No oficiales: NIO2. Java Module System. Java Kernel. Nueva API para el manejo de Días y Fechas, la cual reemplazara las antiguas
clases Date y Calendar. Posibilidad de operar con clases BigDecimal usando operandos.
Versiones de Java
El lenguaje Java se creó con cinco objetivos principales:
1) Debería usar el paradigma de la programación orientada a objetos.
2) Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.
3) Debería incluir por defecto soporte para trabajo en red.4) Debería diseñarse para ejecutar código en sistemas remotos
de forma segura.5) Debería ser fácil de usar y tomar lo mejor de otros lenguajes
orientados a objetos, como C++.
Filosofia
No debemos confundir Java con JavaScript. El primero es el lenguaje de programación. El segundo es un lenguaje de scripting que permite agregar cierta funcionalidad dinámica en las páginas Web. Nuevamente, la similitud de los nombres puede aportar confusión, pero vale la pena aclarar que JavaScript no tiene nada que ver con Java. Son dos cosas totalmente diferentes.
Introducción
• Java soporta comentarios in-line (de una sola línea) y comentarios de varias líneas.
• Comentarios de una sola línea:// esto es una línea de código comentada
• Comentarios de más de una línea:/*Estas son variaslineas de codigocomentadas*/
Comentarios en Java
// Hola.java
import javax.swing.JOptionPane;
public class Hola //Declara una clase llamada Hola, que es descendiente de la clase Object
{ //Entre llaves se declaran los atributos y métodos de la clase
public static void main(String[] args)
//public: indica que el método main()es público
//void: indica que la función main() no devuelve ningún valor
//El método main()debe aceptar siempre como parámetro un vector de strings
{
JOptionPane.showMessageDialog(null, "Hola Mundo"); //Esta línea indica que se va a ejecutar el método showMessageDialog(), encargado de mostrar
//en un cuadro de diálogo un valor (en nuestro caso, un String)
//El primer parámetro no es necesario y podemos usar el valor nulo //(el parámetro indica el JFrame asociado, el contenedor o entorno del diálogo a crear)
}
}
Primer Ejemplo
Estructuras de control◦ Nos permite cambiar el orden de las declaraciones
ejecutadas en nuestros programas. Hay dos tipos de estructuras de control
◦ Estructuras de selección / decision control structures Nos permite seleccionar secciones específicas del código
para ser ejecutado, a partir de una condición.◦ Estructuras de iteración / repetition control structures
Nos permite ejecutar secciones específicas del código una cantidad determinada de veces.
Estructura de Control
Estructuras de selección ◦ Declaraciones que nos permiten seleccionar y ejecutar bloques
específicos del código mientras otras partes son ignoradas. Tipos:
◦ if( boolean_expression )statement;
◦ if( boolean_expression ){ statement1;
}else{
statement2; }
◦ if( boolean_expression1 ) statement1;
else if( boolean_expression2 ) statement2;
else statement3
Estructura de Control
La condición dentro de la declaración If no evalúa un valor boleano. Por ejemplo,
//WRONG int number = 0; if( number ){
//some statements here }
La variable number no es un tipo booleano
Escribir elseif en vez de else if.
Estructura de Control “Errores comunes”
Switch
La sentencia switch se encarga de estructurar una selección múltiple. Al contrario del enunciado if-else que sólo podemos indicar dos alternativas, maneja un número finito de posibilidades.
La estructura general del enunciado switch es la siguiente:
Estructura de Control “Declaracion Switch”
Estructura de Control “Declaracion Switch”
switch( expresión ) { case constante1:
sentencia1; ... break; ... case constanteN: sentenciaN; ... break;
default: sentencia; ... break }
Estructuras de iteración◦ Nos permite ejecutar secciones específicas del código una
cantidad determinada de veces y disponemos de Tres tipos:◦ while◦ do-while◦ for
Estructuras de iteración
• Comencemos por analizar el uso del while cuya estructura es la siguiente:
while( condicion ){accion1;accion2;:}
• El ciclo itera mientras condicion resulte verdadera.
Estructuras de iteración
do-while◦ La sentencia de iteración do-while es de tipo posprueba.◦ Primero realiza las acciones luego pregunta.
do-while tiene esta sintaxis:do{
statement1; statement2; . . .
}while( boolean_expression );
Estructuras de iteración do-while
Bucle for◦ Permite la ejecución del mismo código un número de veces.
Sintaxis del bucle for:for (<inicialización>;<condición>;<actualización>)
<bloque-o-instrucción> Siempre equivalente a un bucle while Como en el caso de do-while, muchas veces un bucle for es
más compacto que un while.
Estructuras de iteración for
Tipos de datos
Tipo descripción longitud
Byte entero con signo 1 byte
Char entero sin signo 2 bytes
Short entero con signo 2 bytes
Int entero con signo 4 bytes
Long entero con signo 8 bytes
Float punto flotante 4 bytes
Single punto flotante 8 bytes
Boolean lógico (admite true o false) 1 byte
String objeto, representa una cadena de carácteres
Las constantes se definen fuera de los métodos utilizando el modificador final.
Habitualmente, se las define como públicas y estáticas (public, static).
Definición de constantes
Un array es un conjunto de variables del mismo tipo cuyas direcciones de memoria son contiguas. Esto permite definir un nombre para el array (conjunto de variables) y acceder a cada elemento del conjunto (a cada variable) a través del nombre común (nombre del array) más un subíndice que especifica la posición relativa del elemento al que queremos acceder.
En Java los arrays comienzan siempre desde cero y se definen de la siguiente manera:
// define un array de 10 elementos enteros numerados de 0 a 9int arr[] = new int[10];
Array
Las matrices son objetos de la clase Array Declaración:
◦ String[] palabras;
◦ String palabras[];Creación:◦ String[] palabras = new String[5];String[] palabras = { "Hola", "mundo" }
Acceso a elementos:◦ palabras[0] = "Adiós";
Obtener tamaño:int tam = palabras.length;
Los índices válidos van desde 0 a .length - 1
Matrices
Las matrices son objetos de la clase Array Declaración:
String[] palabras; String palabras[];
Creación: String[] palabras = new String[5]; String[] palabras = { "Hola", "mundo" }
Acceso a elementos: palabras[0] = "Adiós";
Obtener tamaño: int tam = palabras.length;
Los índices válidos van desde 0 a .length - 1
Matrices
Una cadena de caracteres literal se representa encerrada entre comillas dobles, por ejemplo: "Esto es una cadena". En cambio, un carácter literal se representa encerrado entre comillas simples, por ejemplo: 'A'.
En Java las cadenas son tratadas como objetos, por lo tanto "Esto es una cadena“ es un objeto y podemos invocar sus métodos como veremos a continuación:
// imprime ESTO ES UNA CADENA (en mayusculas)System.out.println( "Esto es una cadena".toUpperCase() ); En cambio, los caracteres (al igual que en C) son valores numéricos
enteros. Por ejemplo 'A' es en realidad el valor 65 ya que este es el código ASCII de dicho carácter.
Notemos además que no es lo mismo "A" que 'A'. El primero es una cadena de caracteres que contiene un único carácter; es un objeto. El segundo es un char; un valor numérico.
Literales de cadenas de caracteres
El método substring puede invocarse con dos argumentos o con un único argumento. Si lo invocamos con dos argumentos, estaremos indicando las posiciones desde (inclusive) y hasta (no inclusive) que delimitarán la subcadena que queremos extraer. En cambio, si lo invocamos con un solo argumento estaremos indicando que la subcadena a extraer comienza en la posición especificada (inclusive) y se extenderá hasta el final del string.
Decimos que un método está “sobrecargado” cuando podemos invocarlo con diferentes cantidades y/o diferentes tipos de argumentos. Este es el caso del método substring.
“Sobrecarga de métodos” es uno de los temas que estudiaremos en el capítulo de programación orientada a objetos.
Subcadenas
Para concatenar cadenas podemos utilizar el operador + como se muestra a continuación:
String x = "";x = x + "Hola ";x = x + "Que tal?";System.out.println(x); // imprime "Hola Que tal?“
• Si bien lo anterior funciona bien no es la opción más eficiente ya que cada concatenación implica instanciar una nueva cadena y descartar la anterior.
• Mucho más eficiente será utilizar la clase StringBuffer.
Concatenar cadenas
• Esta clase representa a un string cuyo contenido puede variar (mutable). Provee métodos a través de los cuales podemos insertar nuevos caracteres, eliminar algunos o todos y cambiar los caracteres contenidos en las diferentes posiciones del string.
• El compilador utiliza un string buffer para resolver la implementación del operador de concatenación +. Es decir que en el ejemplo anterior se utilizará una instancia de StringBuffer de la siguiente manera:
String x = new StringBuffer().append("Hola ").append("Que Tal?").toString();
• La diferencia de rendimiento entre utilizar el operador + y la clase StringBuffer para concatenar cadenas es abismal.
La clase StringBuffer
Las funciones y métodos en java sirven para la optimización de código y la reutilización del mismo. Si quisiéramos realizar sumas de dos o más números en diferentes puntos de la aplicación sería un problema estar realizando el mismo código de la sumatoria a cada instante que lo necesitemos, por lo tanto lo adecuado sería realizar una sola vez la suma y llamar a tal función cada vez que lo necesitemos.
MÉTODOS
Es un conjunto de código reutilizable del cual se puede hacer un usocontinuo que se encuentra disponible en cualquier momento deseadodentro de la aplicación.
Métodos y Funciones
FUNCIÓN
Las funciones son similares a los métodos la diferencia es que estas retornan un resultado lo cual puede ser almacenado dentro de una variable o impreso directamente en pantalla, mientras que los métodos no retornan ningún tipo de dato pero a si mismo podrían meterse variables al mismo método lo cual podría usarse como un tipo de retorno aunque no sería lo mismo.
Métodos y Funciones
Veamos un ejemplo, primero creemos un método que realice la suma de dos números, el
código sería el siguiente:
private void MetodoSuma(float numero1, float numero2){ float Suma=numero1+numero2; System.out.println(Suma); }
Ahora creemos una función que realice lo mismo pero que retorne el resultado paraAlmacenarlo dentro de una variable, el código lo vemos seguidamente:
private float FuncionSuma(float numero1, float numero2){ float Suma=numero1+numero2; return Suma; }
Ejemplo de Métodos y Funciones
En el primero caso haremos el uso del método cargándole con dos datos fijos. Creamos los dos datos de tipo float y luego instanciamos al método de la siguiente forma:
float Num1=7, Num2=4;MetodosFunciones C=new MetodosFunciones();C.MetodoSuma(Num1, Num2);
Primero debemos instanciar a la clase, en este caso a MetodosFunciones porque es el nombre de la clase principal
MetodosFunciones C=new MetodosFunciones();
luego haciendo uso de su variable C instanciamos al método o función que deseemos llamar como se ve seguidamente
C.MetodoSuma(Num1, Num2);
Uso de los Métodos y Funciones
Habiendo realizado el código hasta este punto ya debería imprimir la suma de ambosnúmeros, entonces al ejecutar el código debería mostrarnos el resultado de la suma deambos números.Ahora para poder hacer uso de la función sería lo mismo, pero en esta oportunidad podríamos hacer uso de la clase ya instanciada con su variable C instanciando directamente a la función de la siguiente forma:
Sumax=C.FuncionSuma(Num1, Num2);
En este caso asignamos a una variable Sumax la función ya que esta función retornara un resultado y haría falta hacer impresión en pantalla de este dato lo cual podemos hacerlo de lasiguiente forma
System.out.println(Sumax);
También podría realizarse la impresión directamente sin necesidad de almacenarlo en una variable como se muestra seguidamente lo cual daría el mismo resultado
System.out.println(C.FuncionSuma(Num1, Num2));
Uso de los Métodos y Funciones
Operadores Aritméticos
Operadores
Operador Descripción+ suma- resta* multiplicación/ división% módulo+= acumulador-= restador*= multiplicador/= divisor
Operadores Lógico
Operadores Relacionales
Operadores
Operador Descripción
&& And
|| Or
! not
Operador Descripción
== igual
!= distinto (not equals)
> mayor que
< menor que
>= mayor o igual que
<= menor o igual que
Top Related