Herramientas para editar código hay muchas, pasado el tiempo te darás cuenta que las funciones que incorporan, su peso, y otros factores, hacen que las podamos agrupar en dos categorías: IDES y Editores livianos, ambas muchas veces se solapan entre sí hasta el punto en el que hacen que nos preguntemos si tiene sentido separarlas, y la verdad no hay una separación clara, no existe por ejemplo una manual universal que nos indique las diferencias entre cada una, y esto ocurre porque la separación aveces puede llegar a ser un poco subjetiva, dependiendo de la herramienta en cuestión, ya que muchas intentan pararse justo en el medio de ambas categorías para combinar lo mejor.
Claro esta hay editores de código cuya posición es clara, por ejemplo Notepad++, a este no se le puede comparar con un IDE y de esto no hay duda, y luego tenemos a Visual Studio Code autodenominado editor pero con capacidades de depuración y el muy aclamado Intellisense, lo cual no es mas que el nombre que Microsoft le da a las sugerencias de código, por lo tanto este último lo podemos ubicar en el medio pero inclinandose mas hacia el lado de los editores.
Te invito a ver el video que acompaña a esta entrada, con una visión muy personal intentaré indicarte cuando es mejor usar cada uno, pero te aclaro desde ya que esto puede llegar a ser bastante subjetivo, así que coméntame tu opinión para que otros la puedan ver y así también les sea de utilidad
Un anagrama (del griego ἀνά -ana-, prefijo que significa "de vuelta", y γράμμα -gramma-, "letra") es una palabra o frase que resulta de la transposición de letras de otra palabra o frase. Dicho de otra forma, una palabra es anagrama de otra si las dos tienen las mismas letras, con el mismo número de apariciones, pero en un orden diferente. Por ejemplo, las palabras amor y mora son anagramas porque las dos se componen de las mismas letras: a, m, o y r.
Sabiendo lo que es un anagrama podemos entender mejor de lo que se trata el juego, simplemente vamos a tomar una palabra aleatoria de un archivo de texto con muchas palabras, la desordenamos, y luego deberemos adivinar de que palabra se trata, un juego que pone a prueba nuestras neuronas, tanto al escribirlo como al jugarlo
Ambas forman parte del grupo de librerías que en Java nos permiten construir nuestra propia interfaz gráfica, pero ¿Acaso una de ellas es mejor que la otra? empecemos diciendo que AWT es realmente el método "viejo", ya que fue la primera librería proporcionada por Java para crear nuestra propia GUI, Swing por otro lado sería el método "nuevo" ya que llegó con la intención de subsanar los inconvenientes que representaba AWT, estos inconvenientes solo se evidenciaban bajo el concepto de multiplataforma de Java, observa la tabla a continuación :
AWT
Swing
Usa componentes del S.O.
Dibuja sus propios componentes
El S.O. maneja los eventos
Java maneja los eventos
La apariencia cambia con el S.O
Tienen la misma apariencia en cualquier S.O.
La apariencia es estática
Se puede personalizar con los Look & Feel
Luego de ver esta tabla y el video que encabeza esta entrada, nos queda claro el principal inconveniente al usar AWT, en cada sistema operativo nuestra interfaz va a tener una apariencia diferente y es posible que incluso parte del comportamiento sea diferente también, ya que los eventos son manejados por el sistema operativo, esto hacía que desarrollar aplicaciones con interfaz gráfica en Java fuera algo tedioso, había que verificar que servía y que no en cada sistema, por lo que el eslogan de java: "Escribe una vez y ejecútalo donde quieras" se veía un poco afectado.
En este tutorial principalmente se enseña a hacer una ventana básica, esto a modo de introducción a la creación de interfaces gráficas. Existen 3 modos de crear ventanas en Java, en el video se tratarán los 3, la primera con swing, luego con awt y por último usando el diseñador de Netbeans, en este caso estamos usando igualmente swing pero con la ayuda del diseñador es mucho más simple.
Elementos Swing
Aquí solo compartiré una referencia para que observen los diferentes elementos Swing que se pueden colocar en una ventana, la página está en inglés pero es una guía visual así que no es necesario leer mucho, en el tutorial dedicado al tema de los componentes profundizaremos mas al respecto
Las layouts son simplemente una forma de decirle a Java como organizar los elementos que vamos colocando en cada ventana, cada layout de dice el tamaño y la ubicación que debe tener cada elemento, a continuación las layouts mas comunes:
BoderLayout: Permite organizar los elementos usando puntos cardinales, norte, sur, este y oeste
BoxLayout: Crea columnas o filas de elementos
FlowLayout: Organiza los elementos en lineas, con tamaño justo para su contenido
GridLayout: Podemos crear una matriz para colocar los elementos en ella, el tamaño será lo que ocupe cada celda
GridBagLayout: Es uno de los mas sofisticados, al igual que el de arriba nos permite crear una matriz, pero aquí podemos especificar que un elemento ocupe dos celdas, o que su tamaño no cubra la celda entera
Aquí se intentó explicar las layouts de forma muy resumida, en futuras clases se hablará mas profundamente acerca de este tema, faltaron algunos layouts por mencionar, puedes ver una referencia completa en este enlace (está en inglés):
Son formas particulares de organizar los datos para que estos se puedan utilizar de forma eficiente, se pueden utilizar en variedad de aplicaciones, pero existen ciertos tipos que son altamente especializados en tareas especificas. Son un medio para manejar grandes cantidades de datos como por ejemplo en Bases de Datos
La lista enlazada
Si queremos guardar diferentes datos de información variada, que está de alguna manera relacionada entre sí, puede ser de mucha utilidad el uso de Arrays.
Si la cantidad de información a almacenar es fija no tendremos ningún problema, pero si necesitamos agregar constantemente elementos, tenemos un problema. Siempre podríamos crear una Array enorme mas allá de nuestras necesidades, pero eso podría traducirse en desperdicio de memoria.
La lista enlazada nos permite crear una estructura eficiente, ya que solicita memoria de acuerdo a las necesidades, y sencilla, ya que descubrirás que no es para nada difícil de hacer, funciona como un Array en donde no tenemos límite de elementos a almacenar.
¿Java no contiene ya algo así de forma pre-establecida?
Si, tenemos a "LinkedList", "ArrayList", "Vector" y varios otros, pero saber como crearla es importante en tu proceso de aprendizaje como programador, aprender a construirla te permitirá y creando estructuras cada vez más complejas y además conocerás como estas estructuras trabajan "bajo el capó".
Otras estructuras similares
Las Colas
Las colas son como las listas enlazadas, almacenan varios elementos, pero estas se rigen por una regla muy especifica, que para entenderla, podemos hacer una analogía con el mundo real. Cuando estas en el banco o en el supermercado esperando para pagar, estas en una "fila" o "cola", en donde el primero en llegar es el primero en salir. En las colas podemos almacenar la cantidad que queramos de elementos, al igual que con las listas enlazadas, pero solo podemos obtener elementos de acuerdo al orden que estos fueron agregados, tal cual una fila o cola, el primero en ser ingresado en la cola será el primero en salir.
Los sistemas operativos son muy dependientes de estas estructuras, el ejemplo más sencillo de entender es la cola de impresión
Las pilas
Al igual que las colas, estas tienen un análogo en el mundo real, cuando colocas varios papeles uno encima de otro ¿Que obtienes? una pila de papeles, y la única forma de sacar hojas de la pila es quitando primero las de arriba. En las pilas los últimos en ingresar son los primeros en salir, esto permite diversas aplicaciones como por ejemplo invertir el orden de un grupo de elementos.
Cosas del video ¿Que es "This"?
Se usa para referenciar a la clase misma, desde dentro de ella, por ejemplo si tenemos un método con parámetro "dato", como en el video, pero la clase también posee una variable "dato" ¿Como hace Java para diferenciarlos? si decimos "this.dato" nos estamos refiriendo a la variable de la clase y con "dato" (Dentro del método en cuestión) nos estamos refiriendo al parámetro del método.
Códigos fuente
Nota: Luego de hacer clic en el enlace se abrirá una nueva pestaña, luego debes esperar unos segundos a que aparezca el botón de "saltar publicidad", debes hacer clic en ese botón y deberías ser llevado al archivo en cuestión