Aprende programación en Java con este sencillo truco

  • 2 Respuestas
  • 2204 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado tr0n

  • *
  • Underc0der
  • Mensajes: 83
  • Actividad:
    53.33%
  • Country: 00
  • Reputación 4
    • Ver Perfil
Hola a todos,

Bueno, admito que el titulo de este post parece spam o como si estuviera promocionando un curso, pero es todo lo contrario, quiero compartir una herramienta propia de Java de la cual se ha escuchado muy poco: jshell

jshell es un REPL que fue incluida desde Java 9. Un REPL ("Read-Eval-Print-Loop") es un modo interactivo del lenguaje de programación, o visto de otro modo, es como si el lenguaje se comportara como un lenguaje de scripting como python. Una gran ventaja de tener un REPL es que interpreta línea por línea y no es necesario compilar toda una clase.
Para tener jshell hay que tener un jdk mayor o igual a 9, recomendable el jdk 11 por ser la versión de mayor soporte.

Por ejemplo, para imprimir un "hola mundo" se necesitaría crear una clase como la siguiente:
Código: You are not allowed to view links. Register or Login
public class HolaMundo {
     public static void main (String [] args){
          System.out.println("Hola Mundo");
     }
}

Pero en jshell solo necesitamos ejecutar la línea que en realidad imprime a la consola. Desde una terminal se ejecuta el programa jshell:
Código: You are not allowed to view links. Register or Login
$jshell
|  Welcome to JShell -- Version 11.0.3
|  For an introduction type: /help intro

jshell> System.out.println("Hola mundo");
Hola mundo

jshell>

Esto representa una gran ayuda para las personas que no tienen mucha experiencia en programación y encuentra en Java una gran barrera de conceptos OOP y redundancia (boilerplate) para ejecutar simples tareas. También es muy útil a la hora de aprender las nuevas funcionalidades del lenguaje

Código: You are not allowed to view links. Register or Login
jshell> class User{
   ...> private String name;
   ...> private int age;
   ...> public User(String name, int age){
   ...> this.name=name;
   ...> this.age=age;
   ...> }
   ...> public String getName(){return this.name;}
   ...> public int getAge(){return this.age;}
   ...> public void setName(String name){this.name=name;}
   ...> public void setAge(int age){this.age=age;}
   ...> }
|  created class User

jshell> var userList = List.of(new User("john", 30), new User("Mary", 21));
userList ==> [[email protected], [email protected]]

jshell> userList.stream().filter(user -> user.getAge() > 25).map(User::getName).forEach(System.out::println);
john

jshell>/exit
|  Goodbye

En el ejemplo anterior se crea la clase User y se crea una lista con dos instancias de User. Esta lista se declara con var (Java 10 ). Finalmente, se imprime el nombre de los usuarios cuya edad supere los 25 usando streams (Java 8 ).

Podemos ejecutar archivos con jshell y crear pequeños scripts

Código: You are not allowed to view links. Register or Login
import java.util.zip.*;

var fileZip = "file.zip";
var dest = new File("./");
var buffer = new byte[1024];
var zis = new ZipInputStream(new FileInputStream(fileZip));
var zipEntry = zis.getNextEntry();
var destFile = new File(dest, zipEntry.getName());
var fos = new FileOutputStream(destFile);

int len;
while((len = zis.read(buffer)) > 0){
   fos.write(buffer, 0 , len);
}
fos.close();
zis.closeEntry();
zis.close();

/exit
Este archivo lo guardo como una extensión .java. Muy importante, recuerden que se debe colocar /exit al finalizar el script o si no el programa no va a terminar. Para ejecutar el archivo, teclear

Código: You are not allowed to view links. Register or Login
$jshell unzip.java

Saludos, no duden en realizar cualquier pregunta...
« Última modificación: Julio 11, 2019, 11:07:05 pm por tr0n »

Desconectado Bartz

  • *
  • Ex-Staff
  • *****
  • Mensajes: 211
  • Actividad:
    0%
  • Reputación 8
  • ~Afaik~
    • Ver Perfil
Gracias por el aporte !


Con la fuerza del mar, con la paz del rio


Desconectado hebrondev

  • *
  • Underc0der
  • Mensajes: 6
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
  • Skype: tecnohernan7
    • Ver Perfil
    • Email
Gracias Bro, está interesante. No conocia esa REPL.

 

[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 3888
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
Cheat-Sheet: JAVA - Hoja Guía para que no se me olvide

Iniciado por Denisse

Respuestas: 1
Vistas: 560
Último mensaje Julio 21, 2020, 12:43:49 pm
por DevCode
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 9782
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 4225
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
Curso JavaScript Avanzado [Paradigmas de programación]

Iniciado por Mr.Kratos

Respuestas: 0
Vistas: 3468
Último mensaje Julio 30, 2018, 04:56:37 pm
por Mr.Kratos