Lenguajes JVM

Otros lenguajes para la JVM (Groovy, Scala, Clojure, etc)

Kotlin, parte 3: Métodos de extensión y sobrecarga de operadores

Kotlin permite la sobrecarga de operadores, como Scala y C++, pero de manera controlada, como Groovy. Es decir, no se pueden definir operadores de manera arbitraria como en Scala, donde se puede definir un método ~->, pero sí se pueden tener métodos que se puedan invocar con operadores como +, -, *, [] etc.

Es curioso que siendo un lenguaje con tipado estático, no se fueron por el camino "limpio" para implementar esto, que era definir interfaces para los operadores (por ejemplo, Summable, o Plus, Minus, etc), sino que lo implementaron de igual manera que en Groovy, sólo que pues en Groovy funciona porque es un lenguaje dinámico. Esto presenta dos problemas: primero, que hay que saberse muy bien cuáles son los operadores que se pueden sobreescribir, junto con los nombres de los métodos correspondientes, los cuales no siempre son obvios a la hora de estar implementado uno (Para usar / ¿es divided, quotient, div o qué?) y el otro, que es más difícil saber si una clase tiene operadores sobrecargados o no, ya que hay que revisar los métodos que implementa, en vez de simplemente revisar las interfaces que implementa, y honestamente es más fácil simplemente hacer prueba y error (a ver si funciona si le pongo un +).

Kotlin, parte 2: (not so) typesafe null y otras monerías

Una característica importante de Kotlin es que maneja seguridad en nulos. Esto es algo que varios lenguajes han estado implementando últimamente, porque ahorra muchos dolores de cabeza.

Normalmente, una variable de cualquier tipo que sea objeto, acepta null. En Kotlin no es así; para que una variable acepte null, se necesita especificar de esa forma. Esto no compila:

var x:String = "hola"
x = null

Porque x ha sido definida como de tipo String, y no acepta nulos. Para que acepte nulos, se tiene que definir así:

var x:String? = "hola"
x = null

Los tipos opcionales se pueden usar en parámetros de funciones, tipos de retorno y declaraciones locales.

Cuando se tiene un valor que puede ser null, no se puede usar de manera directa. Hay que verificar que el objeto exista; esto se puede lograr de varias formas:

var x:String? = "hola"
if (x != null) {
  //Aquí dentro, x ya se considera String
  println(x.length)
}
val largo = x?.length //largo será tipo `Int?`
//Se puede usar el operador "Elvis" con tipos opcionales
println(x ?: "no hay x")

Kotlin: El nuevo lenguaje del emperador (1 de 3)

Hace unas semanas, Google anunció con bombo y platillo que ya soportan oficialmente Kotlin en Android. Para mucha gente, esta fue la primera vez que escucharon algo acerca del lenguaje y, como era de esperarse, a partir de ese momento han salido supuestos expertos en Kotlin hasta debajo de las piedras, ofreciendo seminarios y cursos y demás.

Yo llevo unos años siguiéndole la pista a Kotlin medio de lejos, por mi trabajo en Ceylon; así que creo que es un buen momento para contarles mi opinión al respecto. No les voy a decir si deben usar Kotlin o no; escribo esto porque estoy seguro que muchos lo van a probar y probablemente lo empiecen a usar en proyectos reales, pero tal vez por razones muy simples como la sintaxis o que si no tiene punto y coma o, simplemente, porque no es Java (esta es la razón más popular por la que recibió tan cálida bienvenida en el mundo de Android).

Construyendo proyectos con Gradle (instalación con SDKMAN!)


En el post pasado hablé sobre SDKMAN! , una herramienta que nos permite instalar lenguajes de programación como Ceylon, Java, Groovy, etc. Tambien nos permite instalar herramientas como Gradle, la cual nos permite construir y administrar proyectos.

Antes de empezar deberías dar un vistazo al anterior post .

Tan sencillo como teclear desde la terminal (cmd o linux shell) lo siguiente:
$sdk install gradle

Comprobar la versión instalada:
$gradle --version
$gradle -v

Debería salir algo como esto:

------------------------------------------------------------
Gradle 3.5
------------------------------------------------------------

Build time: 2017-04-10 13:37:25 UTC

JDBI como alternativa a JDBC, JPA, Hibernate ...

Para todos aquellos que estén cansados de usar siempre lo mismo (JDBC, JPA, Hibernate, etc.) cuando trabajan con base de datos en sus aplicaciones pueden optar por usar JDBI, una librería que promete facilitarnos la existencia. Su página oficial dice:

JDBI is a SQL convenience library for Java. It attempts to expose relational database access in idiommatic Java, using collections, beans, and so on, while maintaining the same level of detail as JDBC. It exposes two different style APIs, a fluent style and a sql object style

No me dejaran mentir al decir que cuando se trabaja con aplicaciones demasiado robustas los desarrolladores sufrimos al trabajar con extensos archivos confusos y difíciles de mantener. Peor aún cuando el equipo original de trabajo "olvido" documentar el proyecto.

Programa que permite leer 10 números obtener su cubo y su cuarta, mostrarlos en pantalla.

¿Podrían decirme si el método que use para resolver el programa es el idóneo?

package Proyecto9_Unidad1;
import java.util.*;
public class Proyecto9_Unidad1 {
    public static void main(String[] args) {
        int array []=new int[10];
        Scanner leer=new Scanner(System.in);
        int num,x;
        for(x=0; x<10; x++){
            System.out.println("Teclea el numero "+(x+1));
            array[x]=leer.nextInt();}
        for(x=0; x<10; x++){
            System.out.println("********************************************************************");
            System.out.println("El cubo del "+(x+1)+" numero es: "+Math.pow(array[x],3));
            System.out.println("La cuarte del "+(x+1)+" numero es: "+Math.pow(array[x],4)); }}  }

Realice un programa que calcula la fecha de mañana tomando en cuenta la fecha del dia de hoy, el año no es bisiesto

Este es el codigo que realice, podrian auxiliarme si estoy en lo correcto?

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author Zab
 */

public class Proyecto1_unidad1 {

    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
       
  //Fecha actual en formato completo:
        //Tue Sep 23 01:18:48 CEST 2014
        Date fechaActual = new Date();
     
       
        //Formateando la fecha:
        DateFormat formatoHora = new SimpleDateFormat("HH:mm:ss");
        DateFormat formatoFecha = new SimpleDateFormat("dd/MMMM/yyyy");
        System.out.println("Son las: "+formatoHora.format(fechaActual)+" del: "+formatoFecha.format(fechaActual));
       
        //Fecha actual desglosada:
        Calendar fecha = Calendar.getInstance();
       
        int año = fecha.get(Calendar.YEAR);
        int mes = fecha.get(Calendar.MONTH) + 1;
        int dia = fecha.get(Calendar.DAY_OF_MONTH)+ 1;
       

        System.out.println("Fecha de mañana: "+ dia + "/" + (mes) + "/" + año);
       
       
   
    }

validar datos en registros servlet

Buiensd novhes tengo un fomulario de registro en servlet¡como validos dihos datos?

Problemas con validaciones en Java

Hola buenos dias, necesito que me ayuden en un problema que tengo, lo que pasa es que estoy desarrollando una aplicación web, y necesito validar los registros de entrada de empleados, y todo eso se almacena en una tabla de registros, y los campos son: idRegistro, idEmpleado, idTipoMovimiento, fechaMovimiento, lo que sucede es que en el "idTipoMovimiento", me repite el mismo movimiento que es "1", y cada movimiento es: 1.Entrada, 2. Salida a comer, 3, Regreso de comer, 4.Salida, estos movimientos los que quiero sacar de otra tabla llamada "Movimientos", lo que quiero que esos movimientos se vallan insertanto en la tabla registro,

-Tengo este codigo en una clase controller:

public String registroEntradasYSalidasEmpleados(HttpServletRequest request, ModelMap modelMap,
@ModelAttribute CheckRegistroTO checkRegistroIN, @ModelAttribute CheckEmpleadoTO checkEmpleadoIN) {
String mensaje = "";

try {
CheckFacade checkFacade;
checkFacade = CheckFacade.getInstance();

CheckEmpleadoTO empleado = checkFacade.busquedaDeEmpleados(checkEmpleadoIN);

if (empleado == null) {
mensaje = "el empleado no se encuentra";

Dukescript & Stack Overflow Documentation

El aclamado sitio Stack Overflow ha lanzado un nuevo y reluciente sitio a la fase beta abierta denominado "Stack Overflow Documentation".

Ha sido creado con el propósito de explicar conceptos y ejemplos técnicos para varios lenguajes de programación.

Recientemente solicité la creación de una etiqueta para la temática de Dukescript, una vez que podamos logar que 10 personas se comprometan podremos proseguir e iniciar a proveer conceptos, ejemplos y compartir el novedoso enfoque de Dukescript.

Por favor consideren unirse ya sea como commiters o aunque sea solamente para curiosear una vez iniciado usando el siguiente hiperenlace http://stackoverflow.com/documentation/dukescript

Que estén bien.

Distribuir contenido