1) Java se creó en 1991 como parte de un proyecto de Sun para desarrollo de software para electrónica de consumo. 2) Desde un inicio se diseñó para ser multiplataforma y ejecutarse en diferentes CPUs, lo que le dio gran portabilidad. 3) Java ha tenido varias versiones importantes como JDK 1.0, 1.1, J2SE 1.2 que agregó nuevas características.
2. 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.
3. 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).
4. 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.
5. 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.
6. 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.
7. 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++.
8. 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.
9. • 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 varias
lineas de codigo
comentadas
*/
10. // 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)
}
}
11. 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.
12. 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
13. 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.
14. 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”
16. 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
17. • Comencemos por analizar el uso del while cuya estructura es
la siguiente:
while( condicion )
{
accion1;
accion2;
:
}
• El ciclo itera mientras condicion resulte verdadera.
18. int x = 0;
while (x<10) {
System.out.println(x);
x++;
}
19. 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 );
20. int x = 0;
do {
System.out.println(x);
x++;
}while (x<10);
21. 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.
22. 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
23. 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).
24. 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 9
int arr[] = new int[10];
25. 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
26. 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
27. 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.
28. 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.
29. 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.
30. • 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.
31. 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 uso
continuo que se encuentra disponible en cualquier momento deseado
dentro de la aplicación.
32. 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.
33. 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 para
Almacenarlo dentro de una variable, el código lo vemos seguidamente:
private float FuncionSuma(float numero1, float numero2){
float Suma=numero1+numero2;
return Suma;
}
34. 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);
35. Habiendo realizado el código hasta este punto ya debería imprimir la suma de ambos
números, entonces al ejecutar el código debería mostrarnos el resultado de la suma de
ambos 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 la
siguiente 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));
37. Operadores Lógico
Operadores Relacionales
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
38. Operadores Lógico de bit
Operadores de desplazamiento de bit
Operador Descripción
& and binario
| or binario
Operador Descripción
<< desplazamiento a izquierda
>> desplazamiento a derecha
>>>
desplazamiento a derecha incluyendo el bit
de signo