lunes, 5 de julio de 2021

Instalación de Java JDK y Netbeans

El JDK de Java

Open JDK y Oracle JDK

Las versiones de Java

Pasos para instalar Open JDK en Windows

El IDE NetBeans

Pasos para instalar Netbeans


Para poder continuar con nuestra ruta de aprendizaje de la tecnología Java necesitamos instalar el JDK (Java Development Kit) de Java. El JDK de Java es un entorno o ambiente de desarrollo para construir aplicaciones y componentes usando el lenguaje de programación Java.

El JDK de Java incluye herramientas útiles para desarrollar, probar, y monitorear programas escritos en el lenguaje de programación Java y que se ejecutan en la plataforma Java. Algunas de estás herramientas son los comandos javac, jar y programas como el jdkconsole

La tecnología de Java ha evolucionado con el tiempo, siempre buscando incorporar nuevas funcionalidades, simplificar el proceso de desarrollo para responder a los cambios de los requerimientos de una forma más ágil. La ultima versión de Java es la versión 16.

Oracle en los últimos años ha liberado las siguientes versiones

Java SE 8 (LTSL) Marzo 2014.

Java SE 9 Septiembre de 2017

Java SE 10 Marzo de 2018.

Java SE 11 (LTS) Septiembre de 2018.

Java SE 12 Marzo de 2019

Note que las versiones 9 y 10 no tienen ya soporte, Desde Java 10 Oracle estará liberando releases cada 6 meses, sin embargo no todos los releases serán LTS (Long Term Support, Soporte extendido), para este tipo de productos será tener un release LTS cada 3 años.

Existen dos implementaciones principales del JDK de Java, Open JDK y Oracle JDK, a mediados del 2019 Oracle realizó algunos cambios importantes en la licencia de uso de Java, es por esta razón que preferimos trabajar con Open JDK y es la implementación que vamos a instalar. La diferencia principal radica en el soporte y actualizaciones, siendo Oracle JDK la primera en obtener actualizaciones y soporte.

Crea tu directorio de desarrollo

Soy un pro de los estándares, para este curso te recomiendo crear un directorio de desarrollo, puedes crearlo donde más gustes, incluso en Mis Documentos. En mi caso he decido crearlo en una partición D.

D:\devel\java

   + src

   + tools

   + dist


Si decides crear tu directorio de desarrollo en Mis Documentos, entonces quedaría algo así:

C:\Users\RLopez\Documents\devel\java

   + src

   + tools

   + dist

                                                        

Pasos para instalar OpenJDK en Windows

Esta guía esta probada para Windows 10, pero debería funcionar bien para otras versiones anteriores de Windows.

1.- Descargar OpenJDK 16

2.- Descomprimir en un directorio, en mi caso C:\devel\java\tools

3.- Crear la variable de entorno JAVA_HOME con la ruta C:\devel\java\tools\ Muchas aplicaciones Java requieren esta variable.

4.- Agregar a la variable de entorno Path la ruta %JAVA_HOME%\bin Si no lo haces tendrás que pasar la ruta completa cada que quieras ejecutar un programa Java.

5.- Comprobar

Te aconsejo reiniciar tu equipo, Windows debe dejar disponibles las variables de entorno a las aplicaciones.

Estructura de los directorios de Open JDK

Como conocimiento general daremos un repaso breve de los directorios dentro de Open JDK

/jdk-16.0.1/bin Los ejecutables y herramientas de linea de comandos.

/jdk-16.0.1/conf Las configuraciones .properties, .policy y otras configuraciones que pueden ser editados por los desarrolladores, y usuarios finales.

/jdk-16.0.1/lib Librerías necesarias para soportar la ejecución de nuestra maquina virtual.

/jdk-16.0.1/jmods La definición de los módulos incluidos en la versión

/jdk-16.0.1/legal Los archivos de las licencias para cada uno de los modulos.

/jdk-16.0.1/lib/src.zip Este directorio contiene el código fuente de la Plataforma Java.

/jdk-16.0.1/include Los archivos Header del lenguaje C, necesarios para soportar programación nativa mediante JNI (java native interface) y las interfaces para el Debugger de la JVM (Java Virtual Machine).

El IDE Netbeans

Un IDE es una herramienta de Desarrollo Integrado, tiene integrado las siguientes herramientas: editor de código, herramientas built como Ant o Maven, herramientas de versionamiento como SVN o Git.

Netbeans es más que un editor de código, tiene un potente asistente de código que te permite auto acompletar el código fuente y destacar la sintaxis y semántica del código fuente.

Escribí una serie de entradas sobre NetBeans que puedes encontrar en este blog con la etiqueta Netbeans.

Pasos para instalar Netbeans

1.- Descargar NetBeans, existen dos versiones para Windows, el binario y el instalador. Si descargas el instalador este viene con un asistente paso a paso. Para está guía he decidido descargar el binario de la versión 12.4 de NetBeans. Descargar NetBeans 12.4

2.- Descomprimir en un directorio, en mi caso C:\devel\java\tools

3.- Crear el acceso directo, entras al directorio de bin NetBeans y creas el acceso directo del ejecutable.

4.- Agregar al ejecutable la opción --jdkhome %JAVA_HOME%

5.- Ejecuta el acceso directo para asegurarte que funciona correctamente

Te dejo el video para que te sea más fácil. No olvides de suscribirte al canal y darle me gusta.


Referencias

https://blogs.oracle.com/java-platform-group/oracle-java-se-releases-faq

https://docs.oracle.com/en/java/javase/16/install/

https://www.oracle.com/cl/java/technologies/javase-subscription/documentation.html


martes, 29 de junio de 2021

El Gas de Ethereum

Este artículo es una versión traducida del original “A Guide to Gas”. Revisaremos la teoría y terminaremos con un ejemplo practico de como calcular el costo de una transacción en USD.

Entre el 1 y el 3 de enero de 2018, el costo promedio de ejecutar una transacción en el blockchain de Ethereum creció 187%. Esto se debe al aumento en el costo del “gas”, la unidad de medida utilizada para representar el costo de correr operaciones en Ethereum.

El gas puede compararse con las comisiones de transacción que cobran las empresas de tarjetas de crédito. Pero los consumidores nunca interactúan directamente con estos costos de transacción. Estos están ocultos dentro del precio del bien o servicio.

En un blockchain no hay una entidad central que cobre comisiones, determine penalidades o que pueda bloquear transacciones de manera arbitraria, dejando a personas aisladas de la economía. Sin embargo, esperar que cada usuario de Ethereum tenga que comprender el funcionamiento técnico del gas no es una experiencia de uso escalable.

En el largo plazo, el ecosistema encontrará formas de simplificar el uso del gas para mejorar la experiencia del usuario y reducir el riesgo de transacciones anuladas. Mientras tanto, sin embargo, es importante comprender la utilidad del gas y la razón de su existencia.

La Máquina Virtual de Ethereum y el Gas

La Máquina Virtual de Ethereum (MVE) es el ambiente en el cual se ejecutan los smart contracts en el blockchain. Cada nodo de la red participa del blockchain de Ethereum. Entre todos, forman la MVE.

Una transacción dentro de Ethereum se compone de una serie de operaciones secuenciales que ocurren dentro de la MVE. Cada operación requiere de cierta cantidad de energía de cómputo para ejecutarse. Como los mineros deben utilizar energía para completar esas operaciones, se creó una unidad de medida para monitorear este esfuerzo y compensarlos. Esta unidad se llama gas.

El gas es la unidad que mide el trabajo computacional requerido para correr transacciones o smart contracts en la MVE. Mientras más energía se necesite para correr una operación (por ejemplo, porque su código es más complejo) más gas se requiere.

En sí mismo, el gas no tiene existencia. No existe algo como un “token de gas”. El valor de cada unidad de gas se expresa en ETH. Por ejemplo, una operación podría costar 3 gas, lo que sería equivalente a 0.00004 ETH.

Ahora bien: si el gas se mide en ETH, ¿por qué no deshacerse de él y expresar el costo de cada operación directamente en ETH?

El precio del ETH es altamente volátil (entre el 1 y 3 de enero subió 25%). Pero la energía computacional requerida para realizar una transacción es constante. El costo de gas para realizar una “operación de suma” en Ethereum era el mismo el 1 o 3 de enero, sin importar el valor del ETH.

El concepto de gas existe para distinguir entre el costo computacional de correr una operación y el precio de mercado del ether.

El costo de gas (la energía requerida de una operación) se mantiene constante más allá de la volatilidad en el precio. Sin embargo, el precio de cada unidad de gas en ether cambia continuamente. Si el precio del ether sube significativamente, la red puede reducir cuánto ether representa cada unidad de gas para mantener constante el costo para el usuario que paga por el gas.

Los Componentes del Gas

El gas tiene tres componentes fundamentales: costo del gas, precio del gas y límite de gas.

El costo de gas son las unidades de gas necesarias para correr cada operación. Este costo está definido en los documentos técnicos de Ethereum. Por ejemplo, el costo de correr una “operación de suma” es de 3 gas, y seguirá siendo 3 gas sin importar cuál sea el valor en dólares del ether. La red no puede cambiar fácilmente la cantidad de gas necesaria para correr una operación. Pero el precio del gas expresado en ether sí puede ajustarse fácilmente para responder a la volatilidad en el precio del ether o al tráfico de la red.

El precio del gas es el valor de una unidad de gas expresado en ether. El precio del gas se mide en Gwei. El Wei es la menor unidad de ether. Un Gwei es 1000 millones de Wei. En sitios como ethgasstation.info podemos ver el precio de gas promedio de la red. Los usuarios dispuestos a pagar un mayor precio de gas por su transacción serán priorizados por los mineros y la transacción se procesará más rápidamente. Los mineros son quienes se quedan con el gas (o, más exactamente, con el ether que representa ese gas) que el usuario utiliza al enviar su transacción. Por lo tanto, los mineros priorizan las transacciones que tienen mayor precio de gas sobre las transacciones que tienen menor precio de gas.

El límite de gas es la máxima cantidad de gas que uno está dispuesto a pagar en una transacción específica. El límite de gas típicamente es mayor que la cantidad real de gas que requiere la transacción. Si un usuario específica un límite de gas demasiado bajo (las operaciones dentro de la transacción requieren más gas que el que el usuario asigna a la transacción), entonces un minero completará la transacción hasta que el gas se acabe. Cuando esto ocurra, la operación fallará y el minero conservará las comisiones (ya que gastó tiempo y energía en ejecutar tantas operaciones como pudo). El blockchain guardará un registro de la operación como “fallida”.

Por Qué Existe el Gas

El gas existe dentro del blockchain de Ethereum por tres motivos: financiero, teórico y computacional.

El motivo financiero es para incentivar a los mineros a invertir tiempo y energía en ejecutar transacciones. Operaciones más complejas requieren más poder de cómputo y, por lo tanto, más gas. Si un usuario desea que su transacción tenga prioridad, debe ofrecer un mayor precio de gas, para convencer a los mineros de procesarla antes.

El motivo teórico indica que el gas sirve para alinear los incentivos de los participantes de la red. Gran parte de la teoría del blockchain se ocupa de cómo combatir a los agentes maliciosos en un ambiente donde no existe una autoridad central en la que confiar. El gas resuelve parcialmente este problema alineando los incentivos económicos entre usuarios. Los mineros tienen un incentivo para trabajar en la red. Los usuarios tienen un desincentivo a escribir código pobre o malicioso porque están poniendo su ether (bajo la forma de gas) en juego.

El motivo computacional detrás del gas responde a un viejo problema de la teoría de computación: el halting problem. El halting problem trata de determinar si un programa arbitrario parará de correr en algún momento o correrá por siempre, con sólo observar su descripción y los valores de input. En 1936, Alan Turing determinó que es imposible para una máquina resolver el halting problem. En la MVE, esto significa que un minero nunca puede iniciar el procesamiento de una transacción teniendo una certeza total de que la transacción se detendrá en algún momento. Gracias al límite de gas, cada transacción está asociada con una cantidad finita de gas. Incluso si un minero empieza a procesar una transacción que fue programada para seguir indefinidamente (debido a un bug o un ataque a la red), el gas eventualmente se acabará, la transacción terminará y el minero será compensado.

Mirando el futuro

Para los usuarios que recién empiezan a interactuar con el blockchain de Ethereum, el gas suele ser un concepto difícil de entender. Si ponemos un precio de gas demasiado bajo, nuestra transacción no será procesada. Si lo ponemos demasiado alto, estaremos pagando por demás. Si ponemos un límite demasiado bajo, nuestra transacción fallará antes de finalizar (pero igualmente tendremos que pagar por ella).

Colocar el peso de este conocimiento en el usuario no es un modelo escalable. En el futuro, el ecosistema encontrará formas más amigables en las que los usuarios no tendrán que interactuar con el gas, del mismo modo en que los consumidores actualmente no interactúan directamente con las comisiones de transacción. Un mejor manejo del gas será importante para que el blockchain se acerque un paso más a la adopción masiva.

¿Cual es el costo de enviar Ethers?

La cantidad de gas que se necesita para realizar una transacción en Ethereum depende la cantidad de las instrucciones de la transacción, enviar Ethers es una transacción relativamente simple. En promedio se requieren 21000 unidades de gas, supongamos que en este momento cada unidad de gas valen 29 Gwei, necesitarías 609000 Gwei. 1 Gwei equivale a 0.000000001 Ethers, por lo tanto Ethers = 609000 Gwei  * 0.000000001 = 0.000609 Ethers. En estos momentos cada Ether vale 2198 USD, entonces 0.000609 * 2198 = 1,33 USD.

El costo de enviar Ethers en estos momentos nos saldría 1,33 USD. Claro, suponiendo que tienes tu propia Billetera.
Metamask es una billetera que me parece que no te cobra comisión adicional, de hecho en Metamask tu puedes ver el costo estimado de la transacción.

Oh casi lo olvido, para saber el precio del Gas puedes visitar la pagina https://ethgasstation.info/

Referencias
https://media.consensys.net/a-guide-to-gas-12b40d03605d
https://defiprime.com/gas