martes, 31 de mayo de 2016

Curso de Java Ejercicio #2 Calculadora de consola


Para ir a la lista de reproducción del curso haz click aquí
Para ir a la lista de reproducción de los Ejercicios haz click aquí
Para id a mi canal de Youtube haz click aquí
  Acabas de ver el video del ejercicio 2 del curso, aquí creamos una calculadora que funciona a través de la consola, si aun no has podido hacerla a continuación las pistas.

Pista #1, nextInt

   Este ejercicio es muy parecido al anterior, hacemos las entradas en consola con Scanner y System.in, pero en lugar de utilizar la función "nextLine", usamos nextInt, esta en lugar de devolvernos texto, nos devuelve numeros:
Scanner scanner = new Scanner();
int numero = scanner.nextInt;

Pista #2, La aritmética de Java

   Si en tu código colocas una operación aritmética básica, Java la va a resolver, por ejemplo :
System.out.println(2+2)
El resultado en consola va a ser 4
Otro ejemplo :
Si creas una variable:  int numero = 8+2
el valor almacenado en esa variable va a ser: 10

Código fuente


Curso de Java Clase 3: Las sentencias de control parte 1


¿Booleano? pero ¿Que es eso?

   Esta palabra inicialmente la introduje en la clase 1, para hablar de esas variables que solo almacenan valores "true" o "false", ahora en esta clase la volvemos a escuchar y aprendemos que true o false pueden ser los resultados de condiciones, pero, ¿De donde sale ese nombre?

El señor George Boole

   Si nunca habías escuchado ese nombre, es probable entonces, que te sorprendas al yo decirte que estamos hablando de uno de los padres de las ciencias de la computación. En 1854 publicó un libro donde describía un sistema que permitía manipular problemas que solo poseían dos estados lógicos: "verdadero" y "falso", usando procedimientos matemáticos; esa magnifica obra tuvo el nombre de "An investigation of the laws of Thougth which are founded the Mathematical theories of logic and Probabilities", lo que en español significa: "Una investigación de las leyes del pensamiento en las cuales están fundadas las teorías matemáticas de lógica y probabilidad".
  Entonces Booleano se denomina así en honor a George Boole, pero sería injusto decir que aquí acaba todo, ese sistema que él ideo en su libro, ahora se conoce como Álgebra de Boole y es la base para diseñar los circuitos electrónicos en la actualidad, entonces, tu tablet, computador, smartphone, smarttv, ipod, ipad, etcetera, existen gracias a este brillante hombre.

La variable Booleana

  Como vimos el Álgebra de Boole, permite, usando leyes de la matemática ordinaria, manipular problemas que solo admiten argumentos verdadero o falso. Esto es análogo a lo que hacemos con estas variables, ya que en ellas solo podemos almacenar valores verdadero (true) o falso (false), veamos el siguiente ejemplo
boolean p = false;
boolean h = true;
   A diferencia de los ejemplos mostrados en el vídeo, aquí , en lugar de pasarle una condición, directamente le damos un valor de verdadero (true) y falso (false), lo cual también es valido, de hecho así es como se usan mayormente estas variables, lo que mostré en el vídeo fue con fines puramente didácticos.

Pero...  Para que sirve todo esto

   Muy probablemente estas pensando que la variable booleana es inútil, lo cierto es que cuando se esta empezando con programación es muy difícil entender su utilidad, pero créeme es indispensable, si no soportas la incertidumbre por lo menos deja que ese sentimiento te impulse a continuar con el curso, al final lo entenderás.

domingo, 29 de mayo de 2016

Tutorial: Como crear tu reproductor HTML5 personalizado

Para hacer pantalla completa



Para ir a mi canal de Youtube haz click aquí (Recuerda Suscribirte)

La Etiqueta <video>

  Esta etiqueta como bien sabemos especifica un vídeo a mostrar, actualmente hay 3 formatos soportados: Mp4, Webm y Ogg. Los navegadores: Chrome Firefox y  Opera, soportan los 3 formatos desde hace algún tiempo, IE y Safari solo soportan Mp4. Esta etiqueta es nueva en HTML5.

Atributos

  • autoplay : Si se especifica, el video se reproducirá automáticamente, tan pronto como este listo
  • controls : Al colocar este atributo se mostraran los controles, play/pause, por defecto del navegador. Para el tutorial que acabas de ver no debes colocar este atributo
  •  height : Aquí puedes especificar el alto del vídeo
  • loop : Con este atributo puedes hacer que el vídeo se reproduzca nuevamente cada vez que termine
  • muted : Al colocar este atributo el sonido del vídeo quedará silenciado
  • poster : Aquí puedes especificar una imagen que aparecerá mientras el vídeo carga o antes de que el usuario haga click en play
  • preload : Aquí puedes especificar si el vídeo se cargará junto a la página o después
  • src : Sirve para colocar la ruta de nuestro archivo de vídeo
  • width : Con este atributo se especifica el ancho del vídeo

Convenciones y sugerencias

  Como pudiste ver en el vídeo, no utilicé muchos de estos atributos, como por ejemplo "width" y "height", por el contrario esas propiedad las edité desde CSS, es mas eficiente de esta forma ya que creas una separación entra la funcionalidad y el diseño, por lo que es mas fácil editar. Otro atributo del cual les recomiendo prescindir es "src", en su lugar pueden trabajar con la etiqueta "<source>", como vimos arriba hay diferencias de compatibilidad en cuanto a formatos, con la etiqueta "source" pueden especificar varias fuentes de diferentes formatos, como en el siguiente ejemplo :
<video>
      <source src="mivideo.ogg" />
      <source src="mivideo.mp4" />
</video>
   Con esto nos aseguramos que nuestro video se reproduzca en todos los navegadores

Referencia Javascript

Funciones

  • canPlayType() : Verifica si el navegador puede reproducir el tipo de vídeo del archivo
  • load() : Vuelve a cargar el vídeo
  • play() : Reproduce el vídeo
  • pause() : Pausa el vídeo

Propiedades

  • audioTracks : Devuelve un objeto con información del audio, esta propiedad solo es compatible con IE
  • autoplay : Permite ver o configurar la reproducción automática
  • buffered: Podemos utilizarla para ver cuanto del vídeo se ha descargado y guardado en buffer
  • controlls : Permite mostrar los controles por defecto del navegador
  • currentSrc : Devuelve la URL actual del archivo de vídeo
  • currentTime: Devuelve o configura la posición actual del vídeo en el tiempo de reproducción, en el tutorial usamos esta función para poder calcular la posición del "slider" y para luego colocar el video en dicha posición
  • defaultMuted : Especifica si el video debería estar silenciado por defecto
  • defaultPlaybackRate y playbackRate : Hacen casi lo mismo, permiten ver o modificar la velocidad de reproducción del vídeo, la primera especifica un valor por defecto, por lo que si la usamos tendremos que llamar a la función "load()", en la segunda cambia el valor actual, por lo que no es necesario volver a cargar el vídeo
  • played : Devuelve un objeto del tipo "TimeRange" que permite ver que tanto del vídeo ha sido reproducido
  • preload: Representa lo mismo que el atributo con el mismo nombre, de la etiqueta "video"
  • readyState : Permite ver que tan listo esta el medio para poderlo utilizar, en el video tutorial utilizamos esta función para saber cuando esta lo suficientemente listo, como para poder extraer la propiedad "duration"
  • seekable : Devuelve un objeto "TimeRange" con los pedazos del vídeo que puedan ser buscados por el usuario
  • src : Hace lo mismo que el atributo con el mismo nombre, de la etiqueta "vídeo"
  • textTracks : Extrae el texto que tenga el vídeo, estos pueden ser: Subtitulos, descripciones o metadata
  • volume : Permite alterar el volumen del vídeo
 En esta lista se omitieron algunas propiedades que todavía no son compatibles con la mayoría de los navegadores
 También se omitieron los eventos del objeto vídeo, ya que escapan de los alcances de este tutorial

Fullscreen Javascript API

  Para lograr desde javacript la implementación de pantalla completa es muy sencillo, pero debes saber que por los momentos Chrome no la implementa de la misma manera que los demás navegadores.
  Lo único que debes hacer es acceder al elemento que va a ocupar la pantalla completa y llamar desde él a la función "requestFullscreen" esto para cualquier navegador que no sea Chrome, para este debes usar: "webkitRequestFullscreen", a continuación un ejemplo :

<video src="video.webm" controls id="mivid">
</video>

<script type="text/javascript">
var video = document.getElementById("mivid");
function pancomp(){
if(video.requestFullscreen){
video.requestFullscreen();
}
else {
video.webkitRequestFullscreen();
}
}
</script>

Aquí al llamar a la función: "pncomp()", puede ser desde un botón cualquiera, nuestro video se va a colocar en pantalla completa

Pseudo-clase CSS

  Cuando hablamos de pseudo-clase en css nos referimos a algo que es básicamente una clase pero con su estado modificado, una de las más conocidas en ":hover" que como bien sabemos se usa para cambier el estilo de los objetos con el mouse encima.
  La pseudo-clase "-webkit-full-screen" es un propuesta de Chrome para poder definir estilos diferentes para objetos que van a ocupar la pantalla completa y su sintaxis es la siguiente :

.miclase:-webkit-full-screen {
width: 100%;
height: 100%;
}

  En este caso yo defino el tamaño para ocupar el 100% de la pantalla, pero bien podemos definir el tamaño que queramos

Códigos fuente y archivos del vídeo


viernes, 27 de mayo de 2016

Curso de Java Ejercicio #1 : Juego de Preguntas


Nuestro primer ejercicio

  Como dije en el vídeo de introducción a los ejercicios, el objetivo de esta serie de vídeos es que se logren afianzar los conocimientos adquiridos durante el curso mediante prácticas, a continuación voy a colocar dos pistas.

Pista #1 : Las sentencias de control y la función equals

  En la clase 2, vimos lo que son las sentencias de control, vamos a repasar un poco:
if( condición ) {
 Código a ejecutar ;
}
 Arriba tenemos la sintaxis de una sentencia de control como las que vimos en la clase 2, si la condición se cumple el código en medio de las llaves se ejecuta, de lo contrario no lo hace.

Pero... ¿que es una condición?

  Desde un punto de vista general, podremos decir que una condición, es todo aquello de lo cual podamos preguntarnos si es verdadero o falso.

La funcion equalsIgnoreCase

  En la clase dos vimos que esta función tiene la siguiente sintaxis :
  texto1.equalsIgnoreCase(texto2)
  Donde "texto1" y "texto2" son variables de tipo "String" cada una con su respectivo valor. Al utilizar la función estamos preguntando: ¿El valor de las funciones es el mismo? por lo tanto tenemos una condición ya que podemos preguntarnos si es verdadero o falso.

Pista #2: La Aritmetica dentro de Java

  Cuando tenemos variables de tipo numérico, ya sea int, float, etc. Podremos realizar operaciones aritméticas con Java sin necesitar de ninguna funcion extra, veamos los siguientes ejemplos:
System.out.println(2+5);
La salida en consola en este caso sería: 7
int numero = 2*4;
El valor almacenado en la variable sería : 8

El código fuente

  Como prometí en el vídeo, aquí les tengo el código fuente del ejercicio, para descargarlo haz click aquí 

jueves, 26 de mayo de 2016

Curso de Java Clase 2: Las entradas, los Strings e introducción a las sentencias de control


Sobre las Entradas

   Como acabamos de ver en el video las entradas en consola se logran usando una combinación de dos cosas System.in y Scanner, ahora vamos a hablar un poco de lo que sucede bajo el capó 

¿Qué es System.in?

 En la entrada pasada, vimos que System es la clase que contiene las operaciones básicas de entrada y salida, en este caso "in" representa un flujo de información, en el mundo de la programación vamos a usar la palabra inglesa "Stream", de hecho mas adelante en el curso se va a dedicar una clase completa a los Streams. Desde un punto de vista conceptual, un Stream es un canal de información, imagínenlo como una carretera donde circulan vehículos de todo tipo, donde cada vehículo lleva paquetes que deben ser entregados, en este ejemplo los paquetes representan la información que es transportada, que ahora no es mas nada que el texto que introducimos en la consola.
  La gran diferencia con "System.out" es como es obvio que "in" trabaja exclusivamente con flujos de entrada.

¿Qué es Scanner?

  Scanner es una clase, como vimos las clases sirven para crear objetos con ellas, esto, como dije en el video va a quedar mas claro cuando veamos orientación a objetos. Para poder entenderlo mejor sin abrumarlos de teoría imaginemos lo siguiente: Los objetos en programación son como los objetos del mundo real y como tales tienen sus propiedades y funciones, por ejemplo un vehículo, tiene una propiedad, el color y una función transportar cosas y personas; entonces si el objeto del mundo real es un vehículo ¿Cual sería la clase? podemos imaginarla como el manual de instrucciones para fabricar un  vehículo.
   Con Scanner creamos un objeto del tipo Scanner, y podemos usar una de sus funciones, en esta caso "nextLine", para transportar nuestra información a la consola, Scanner es nuestro vehículo en la autopista Java. 


System es una clase ¿Podemos crear un objeto con ella?

  
    Excelente pregunta, si te la estás haciendo te felicito, la respuesta a esta pregunta es negativa, existen muchas clases que no se pueden instanciar ya que son abstractas, de forma muy resumida puedo decir que solo están para aprovechar sus funciones sin que sea necesario crear objetos con ellas, es como un manual de aeróbicos, es un manual para hacer algo, pero el resultado no es un objeto físico.


¿Podemos atrapar una entrada en consola sin Scanner?

    
    Si, si se puede, pero te verás obligado a hacer manualmente un montón de cosas, el buffer y el manejo de excepciones son un ejemplo. Como prometí en el video a continuación un ejemplo de entrada en consola sin Scanner.

public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(
                new InputStreamReader(System.in));
        System.out.print("¿Su nombre? ");
        System.out.flush();
        String nombre = in.readLine();
        System.out.println("Felicidades" + nombre);
    }

  Aparte hay que importar varias cosas :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;


¿Importar?  ¿y la aduana nos va a cobrar impuestos?

  
   Con importar lo que hacemos es traer código desde otros proyectos o librerías, en este caso Java ya nos provee con una serie de librerías que podemos importar y utilizar, esta se conoce como la librería estándar de Java, es de hacer notar que el paquete "Java" de las librerías no es el único. La palabra reservada "import" y sus respectivas librerías a importar, van siempre después de la linea del paquete.

Los Srings son objetos ¿y new?


  String es una clase y por lo tanto las variables de tipo String son objetos, entonces ¿porque no usamos new para crear objetos? String es una excepción en este caso, realmente no conozco si hay mas clases con esta excepción. Es importante saber que crear un objeto String con "new" no es incorrecto, es solo innecesario, veamos el siguiente ejemplo:
  String texto = new String("hola mundo");
Este código no nos va a dar ningún error, pero como dije antes es innecesario ya que como vimos lo podemos hacer así:
String texto = "hola mundo";

Introducción a las Sentencias de Control

  Sin sentencias de control, la programación sería muy aburrida, todo nuestro código se ejecutaría linea por linea sin excepción. Con este ejemplo acabamos de definir lo que son, simplemente son porciones de código que nos permiten decidir que se va a ejecutar y que no. La forma mas básica de ellas en Java es la siguiente:
if( Condición ) {
 codigo a ejecutar si la condición es cierta ;
}

  La condición puede ser cualquier cosa que sea verdadera, por ejemplo
int numero = 2;
if(número == 2) {
System.out.println("El numero es 2!!");
}

Atención

Acabamos de ver dos operadores diferentes: "=" y "==" el primero es para  asignar valores a variables y el segundo es para comparar dos valores

  En el código de arriba si lo ejecutamos, la respuesta en consola sería : "El número es 2!!"

Las funciones "equals" e "equalsIgnoreCase"

    Estas funciones comparan dos textos y devuelven "verdadero" si son iguales y "falso" si no lo son, veamos el siguiente ejemplo:
Tomemos tres variables String, cada una con su respectivo valor:
String texto1 = "hola";
String texto2 = "chao";
String texto3 = "Hola";
  Ahora usemos una de nuestras funciones, como son funciones que devuelven verdadero y falso, tenemos que usarlas dentro de una sentencia de control, en este caso un "if"
if(texto1.equals(texto2)){
   System.out.println("Son iguales");
}
  Este código no se va a ejecutar porque las variables como podemos observar no tienen el mismo valor, ahora veamos lo siguiente:
if(texto1.equalsIgnoreCase(texto3)){
   System.out,println("Son iguales");
}

  En este caso, si se ejecuta el código, ya que la función "equalsIgnoreCase" las compara sin importar las mayúsculas y minúsculas, si por el contrario hubiéramos usado la función "equals", el código no se hubiera ejecutado, te invito a que lo intentes por tu cuenta a modo de ejercicio.

Las palabras raras de la clase: "Sobrecarga de métodos"

  En clases futuras vamos a ver funciones y esto quedará mucho mas claro, muy resumidamente puedo decir, que las funciones o métodos, son bloques de código que podemos llamar cuando queramos para ejecutar todo lo que tengan dentro. Podemos verlo de la siguiente manera, son como variables pero en lugar de almacenar valores, almacenan código. Pero las funciones no solo se identifican por el nombre, si no por los parámetros y la cantidad de los mismos que le podemos pasar, parámetros son eso que colocamos dentro de los paréntesis, por lo tanto podemos crear las funciones que queramos, con el mismo nombre, y no vamos a obtener ningún error siempre y cuando definamos parámetros diferentes para cada una.

Java Serie de Ejercicios: Introducción


Para ir a la lista de reporducción del curso haz click aquí

   Hoy empezamos una nueva serie de videos que forman parte del curso de Java, si viste el video que acompaña esta entrada ya sabes de que se trata, de todas formas explico que en estos videos se les va a invitar a realizar ciertas practicas con el fin de que afiancen y practiquen conocimientos adquiridos durante el curso.

Pendiente en las clases

  Antes de publicar un video de ejercicios, en la clase correspondiente yo colocaré un aviso, de modo que una vez publicada dicha clase le seguirá el ejercicio, en las diapositivas del video aparecerá algo como lo siguiente:

  Si al momento de ver el video ya esta disponible el ejercicio yo colocaré un enlace directamente en el video.

El código fuente

  Como dije en el video (si no lo has visto click aquí) se te va a invitar a pausar el video para que tu mismo intentes realizar la práctica, aquí en el blog encontraras algunas pistas en dado caso de que necesites alguna orientación. Por último en la misma entrada con las pistas, colocaré el código fuente para que lo descargues.

Sobre el juego que acabas de ver

  Si sigues el curso en su totalidad aprenderás a hacer eso y mucho mas, así que animo.

martes, 24 de mayo de 2016

Curso de Java Clase 1: Las Variables, tipos de datos y nuestro primer programa

Para ver el video que acompaña esta entrada haz click aquí
Para ir a la primera clase haz click aquí
Para ir a la lista de reproducción de Youtube haz click aquí

¿Cuando usar el "punto y coma" ?

  Después de haber visto el video, si fuiste lo suficientemente observador habrás notado que hay sitios de nuestro código que finalizan con punto y coma y hay otros que no

  Entonces ¿Cuando finalizar con punto y coma en java? La respuesta es muy simple, se finalizan todas las sentencias pero no la declaraciones de bloque. Las declaraciones de bloque son todas aquellas que seguidas de su nombre tienen llaves de apertura y cierre ( { y }) y una o varias lineas de código dentro de estas llaves. Si es una sentencia de linea deberá siempre y obligatoria mente terminar en punto y coma. En las imágenes de arriba vemos que "public class" y el metodo "main", son declaraciones de bloque, ya que tienen su nombre seguido de las llaves con código dentro de las mismas, el resto de código son sentencias de linea.

Declarar Varias Variables

  Si queremos declarar varias variables que tienen el mismo tipo de dato, como por ejemplo lo siguiente:
int numero1 = 5;
int numero2 = 10;
int numero3 = 15;

  Podemos resumir estas 3 lineas de código en una sola de la siguiente forma:
int numero1 = 5, numero2 = 10, numero3 = 15;
Como acabamos de ver, iniciamos como es normal indicando el tipo de dato, luego separamos por comas cada variable y al finalizar terminamos con punto y coma ya que es una sentencia de linea. También es valido crear las variables del mismo modo que acabamos de ver pero sin asignarle valores  de la siguiente forma:
int numero1, numero2, numero3;
  Luego para utilizar estas variables habrá que asignarle algún valor, como por ejemplo:
numero1 = 5;
Ya no es necesario declarar el tipo de dato porque la variable ya fue creada.

La clase System

La clase "System" contiene otras clases y metodos útiles, pero es de destacar que su principal función son las operaciones básicas de entrada y salida, ejemplo de esto es "System.out" que ya utilizamos para hacer una salida en consola

¿Que es "System.in" ?

 Habrás podido notar que "out" no es el único miembro de la clase "System", entre las muchas cosas que aparecen "in" es una de ellas, si sabes suficiente inglés, te estarás preguntando: Si out es salida en consola ¿in será entrada de datos? Felicidades si te haces esta pregunta, significa que haz explorado el código, la respuesta es afirmativa, pero el uso de "System.in" es un poco mas complejo y por lo tanto ese tema será desarrollado en una próxima clase.

Sobre el nombre de las Variables

 Hay ciertas reglas que son validas no solo para Java si no para casi cualquier lenguaje de programación. En cuanto al nombre de las variables tenemos lo siguiente:
  1. Las variables no pueden contener: Espacios en blanco, tildes y cualquier caracter especial excepto el guión bajo. Ejemplo numero&palabra
  2. No pueden comenzar con un número: El nombre de la variable puede empezar solamente con alguna letra o con el guión bajo. Ejemplo 1numero
  3. Si pueden contener números siempre cuando no esten al inicio: Puedes crear una variable cuyo nombre contenga números, pero estos nunca pueden ir al inicio. En el video creamos varias variables de este tipo. Ejemplo numero1
  4. No pueden llamarse igual que alguna palabra reservada de Java: Un ejemplo de esto es la palabra "System" que como ya vimos nos permite acceder a operaciones de entrada y salida, como es obvio no podemos ponerle este nombre a una variable y lo mismo es valido para cualquier palabra reservada.
  5. Las variables distinguen entre mayusculas y minusculas: Esto es super importante, ya que variables con los siguientes nombres: Numero, numero, NUMERO o numeRo, van a ser reconocidas por java como variables TOTALMENTE diferentes

Los tipos de dato

  El tipo de dato es un concepto utilizado no solo en Java si no en casi cualquier lenguaje de programación, al declarar un tipo de dato le estamos diciendo en el lenguaje que valor vamos a guardar en la variable que estamos a punto de declarar, por ejemplo:
String nombre = "Manuel";
 Aquí queremos guardar en la variable "nombre" el valor "Manuel", entonces decimos en el lenguaje, que queremos una variable de tipo String, lo que voy a poner a continuación no es valido :
String nombre = 15;
Estamos intentando asignar un valor del tipo "int" pero declarando un tipo "String", Netbeans en esta caso nos va a dar un error

Los tipos de dato mas comunes y sus especificaciones

   Los tipos de dato en Java se pueden clasificar en "primitivos" y "de tipo objeto", esto va a quedar mas claro cuando veamos "Orientación a Objetos", por ahora solo hablaremos del espacio que ocupan en memoria y del rango de valores que pueden almacenar

Primitivos :
  • byte: Puede almacenar valores de tipo entero, ocupa un byte en memoria y solo puede tener valores del rango que de -128 a 127
  • short: Puede almacenar valores de tipo entero, ocupa 2 bytes en memoria y su rango va de -32768 a 32767
  • int: Puede almacenar valores de tipo entero, ocupa 4 bytes y su rango va de  -231 hasta 231 
  • long: Puede almacenar valores de tipo entero, ocupa 8 bytes, y su rango va de -263 hasta 263 
  • float: Sirve para almacenar decimales simples, ocupa 4 bytes y su rango escapa de los alcances de esta clase, solo diremos que es muy grande
  • double: Sirve para almacenar decimales simples, ocupa 8 bytes y su rango al igual que float, por ahora solo diremos que es muy grande
  • boolean: Aquí solo podremos guardar valores lógicos, verdadero y falso, para ello usaremos las palabras "true" para verdadero y "false" para falso, representa un bit de información pero su tamaño no es algo definido de forma precisa
  • char: Sirve para guardar un carácter, específicamente uno solo y ocupa 2 bytes de información, no hablaré del rango de este tipo en esta clase ya que escapa de los alcances de la misma, solo ten en cuenta que puedes guardar un solo carácter de cualquier tipo
De tipo objeto :
  Este tipo de dato es un poco mas complejo así que no los voy a nombrar a todos, también por cuestiones de espacio ya que son muchos. El espacio en memoria que puede ocupar un objeto en Java o en cualquier lenguaje, puede variar por diferentes factores, así que en este apartado no tiene sentido hablar de memoria, por esta vez solo hablaremos de un tipo de dato:
  • String: Aquí podemos almacenar cadenas de texto completas, sin límite de duración y con cualquier carácter que queramos.

Fin de esta clase, si te gusta mi material puedes apoyarme suscribiendote a mi canal de Youtube
dandole me gusta al video y compartiendo el blog.

domingo, 22 de mayo de 2016

Curso de Java: Introducción

  Para ver el video que acompaña esta entrada haz click aquí
   Al querer aprender java lo primero que nos viene a la mente es ¿Qué es Java? si abrimos google y buscamos java nos aparecen principalmente dos cosas, la descarga de un software y un lenguaje de programación, entonces nos viene a la mente la pregunta ¿Qué es entonces Java? La repuesta es ambos, pero para poder explicar esto primero tenemos que ver algunos conceptos básicos sobre lenguajes de programación en general.
  Dos preguntas importantes: ¿Qué es un programa? ¿Qué es un lenguaje de programación?
  •          Un programa: Son básicamente una serie de instrucciones que la computadora puede ejecutar
  •          Un lenguaje de programación: Son la forma o el lenguaje en el que están escritas estas instrucciones

Sabiendo esto podemos dividir los lenguajes en varias categorías, esto porque la máquina no habla español o inglés, si no habla un lenguaje que no es natural para el ser humano, por lo que clasificamos los lenguajes según su nivel de comprensibilidad para el ser humano
  •          Lenguajes de bajo nivel: Aquí tenemos al lenguaje de máquina que no es comprensible o no es natural para el ser humano
  •          Lenguajes de alto nivel: Son los lenguajes de programación, como java, c, c++, c#


Sabiendo esto ya podemos introducir lo que es la compilación, que no es nada más que el proceso de convertir o traducir un lenguaje de alto nivel a uno de bajo nivel, o lo que es lo mismo, a partir de un lenguaje que el humano puede entender, crear un lenguaje que la máquina pueda entender.
  La compilación tiene una pequeña desventaja, el lenguaje de máquina no es igual para todas las plataformas, es por eso que programas que son para Linux normalmente no funcionan en Windows o programas que son para Mac solo funcionan en Mac
  Aquí es donde explicamos que es ese software también llamado Java. Cuando escribimos un programa java y luego lo compilamos, no estamos compilando al lenguaje de nuestra máquina, si no al lenguaje de la máquina virtual java, este programa que instalamos es una máquina virtual que va ejecutar nuestros programas java ya compilados. Esto es una ventaja ya que siempre y cuando tengamos la máquina virtual de java instalada podemos ejecutar cualquier programa java, sin importar si fue hecho en Linux, Mac o Windows. Podemos decir que el programa se ejecuta en la máquina virtual. Este lenguaje intermedio se llama bytecode
De aquí proviene el slogan de Java: “Escribe una vez, ejecútalo en todas partes”

Breve Historia de java

  Java fue originalmente desarrollado y lanzado al público por James Gosling y la Sun Micro System en 1995 y desde sus inicios fue diseñado para ejecutarse con tan pocas dependencias de implementación como fuera posible, es con datos del 2012 uno de los lenguajes de programación más populares, habiéndose registrado 10 millones de usuarios reportados.
  No se tiene certeza de donde deriva su nombre, al principio se le llamó Oak, por un árbol de roble que había en las afueras de las oficinas, luego se llamó Green y por último obtuvo su actual nombre. Hay varias hipótesis sobre el origen del nombre “Java”, algunos sostienen que podría tratarse de un acrónimo de los nombres de los diseñadores James Gosling, Artur Vann Hoff y Andy Bechtolsheim, otros que podría tratarse de Just Another Vague Acronym, que significa “tan solo otro acrónimo vago”, pero la hipótesis más plausible es que su nombre de deriva de un tipo de café disponible una cafetería cercana, lo que explica también por qué su logo representa una taza de café caliente
Java es un mundo
   Con java no solo podemos hacer programas que corran en nuestro escritorio, sino también páginas web dinámicas (JSP) aplicaciones del lado del servidor (Servlets) Rich Internet aplications (applets) y sistemas embebidos ya que es posible encontrar pequeños dispositivos capaces de ejecutar java de forma nativa, podemos encontrar java en teléfonos móviles, sintonizadores de TV e incluso tarjetas inteligentes (JavaCard)
¿Qué podemos hacer con Java?
ü  Una página web de compras electrónicas, como amazon.com o mercadolibre.com usando JSP y los Servlets
ü  Una página de juegos como MiniJuegos.com, usando los applets que son mini programas que se ejecutan en el navegador
ü  Un software de inventario y facturación para una tienda como aplicación de escritorio
ü  Aplicaciones para Android, las aplicaciones para Android se escriben en Java, pero usando unas librerías especificas
ü  Programar el funcionamiento de las tarjetas que se usan bien sea para abrir las puertas de las habitaciones de hotel o incluso tarjetas débito y crédito de los bancos (JavaCard)
El entorno de desarrollo
El entorno que vamos a usar en el curso va a ser Netbeans, pero también existen otros entornos de desarrollo, eres libre de elegir el que más te guste o se adapte a tus necesidades, a continuación, enlaces de descarga de algunos IDE Java populares:
Netbeans con el JDK incorporado
Netbeans sin el JDK, si deseas instalar Netbeans y el JDK aparte