Algoritmos y Estructuras de Datos Compiladores e Intérpretes Herramientas Lenguaje de programación
!Prog C/C++
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Redes y Computación Distribuida Sistemas Operativos


[words: 899] [reading time: 5min] [size: 23499 bytes]

Java

El instalador viene en la versión de JDK. Dirección predeterminada del compilador es la siguiente: (siendo xxx su versión):

C:\Program Files\Java\jdkxxx\bin

Para ejecutar, nos situamos en la dirección de ese archivo en el CMD y usamos el siguiente comando:

>> java NombreDelArchivo.java

Para que funcione, como mínimo debe existir una clase pública que lleve un método también público y estático llamado main, que a su vez tenga de parámetro una matriz de Strings.

public class Clase {
  public static void main (String[] args) {
    //Código
  }
}

El problema que surge con este sistema es que no se pueden crear otras clases fuera de ese archivo. De lo contrario, hay que compilar. Entonces, para compilar el código fuente se usa el comando:

>> javac NombreDelArchivo.java

Y para después ejecutar el archivo .class que se genera:

>> java NombreClaseMain

Si se están usando paquetes, el archivo .class resultante debe de estar en una carpeta llamada como el paquete. Además, ese archivo se debe llamar igual que la clase que contiene.

Ejecuta todo el programa desde el paquete base, la raíz de todos los directorios.

Y para crear un archivo .jar (archivo comprimido con todo lo necesario para ejecutar: .class, imágenes…) necesitamos crear otro archivo (no es necesario que tenga una extensión específica, mejor .mf) cuya primera línea ponga que clase contiene el método main de la siguiente manera:

Main-Class: NombreDeLaMainClass (salto de línea)

Usamos el comando jar con los atributos c (para crear un archivo) f (para darle un nombre al jar) m (para incluir el MANIFEST). Escribimos después en un orden que se corresponda con las letras el nombre del archivo .jar (mejor con esta extensión), el nombre del MANIFEST y el nombre de los archivos .class (o *.class):

>> jar -cfm NombreDelJAR.jar MANIFEST.mf *.class

Para ejecutar este archivo .jar se usa el comando:

>> java -jar Nombre.jar

Se puede hacer un archivo .bat que haga eso por nosotros:

@echo off
java -jar Nombre.jar
pause
exit

Como pasar a .exe (ejecutable de Windows que no necesita tener Java instalado) (se necesita un programa externo)

javac -cp lib1.jar;lib2.jar Program.java
# -cp: class path

gradle

mkdir gradle-tutorial
cd gradle-tutorial
gradle init

Escoge 1 basic para el lenguaje del build script vamos a usar Groovy project name

# muestra las tareas posibles
./gradlew tasks
./gradlew nombre-tarea

Estructura básica:

Groovy (Gradle Groovy DSL (domain specific language: usa algunas apis de gradle y un subconjunto de groovy))

configuración básica:

// build.gradle

// llamada al metodo plugins con un closure como parametro
// dentro del cual se listan los plugins a usar con el metodo id
plugins {
  // esto añade las tasks:
  // - assemble: assemble the output of this project (?)
  // - build: assemble and test
  // - clean
  // - jar: assemble jar with main clases
  // - classes: assemble main classes
  id 'java'
}
./gradlew build
# genera build/classes/.../*.class compilados
# genera build/lib/.../*.jar compilado
java -jar build/libs/gradle-tutorial.jar
# > error: no main manifest attribute

hay que añadir Main-Class: **** al manifiesto, vamos a crear un task para eso

// build.gradle

// se configura la task jar declarada anteriormente (como plugin)
jar {
  manifest {
    attributes 'Main-Class': 'com.tomgregory.GradleTutorial'
  }
}

tests

// src/main/resources/com/tomgregory/GradleTutorialTest.java (?)
// src/test/java/com/tomgregory/GradleTutorialTest.java
package com.tomgrerory;
import org.junit.Test; // dependencia

public class GradleTutorialTest {
    @Test
    public void verifyNoExceptionThrown() {
        GradleTutorial.main(new String[]{});
    }
}
// build.gradle
repositories {
  // indicamos de donde descargar las dependencias
  mavenCentral()
}

dependencies {
  testImplementation group: 'junit', name: 'junit', version: '...'
}

gradle 2

// build.gradle
plugins {
    id 'application' // incluye lo mismo que 'java' pero añade la task run
}

application {
    // Nombre de la clase que contiene el main para saber cual ejecutar
    mainClassName = 'paquete.Main'
}
.gradle/
build/

# jdtls
bin/
.settings/
.classpath
.project
# Linux start script should use lf
/gradlew        text eol=lf

# These are Windows script files and should use crlf
*.bat           text eol=crlf

debug

uso de jdb, muy similar de gdb

jdb -classpath build/classes/java/main -sourcepath src Main

recuerda compilar con -g:

javac -g ...

muy buena guia aqui

stop at <Class>:<Line>      breakpoint
stop at <Class>.<Method>    breakpoint
step                        execute current function
step into                   execute into current function
step up                     execute to end of method
print <Expression>          print values
locals                      print all local variables
list                        show source code
Volver a Java