Domanda

Voglio una sorta di "test di fumo" minimo per una serie di JVMS, che vanno da JDK 1 - 8, OpenJDK, IBM JDK, e persino il Microsoft JDKS, se possibile.C'è un modo per creare un file minimo di classe Java che dovrebbe essere in grado di testare questo?

Aggiorna

Dovrebbe essere possibile eseguire:

java -cp classname

e avere un'uscita che conferma che il JVM funziona correttamente.

Inoltre, per coloro che pensano che i JVM siano sempre funzionanti dovrebbero sapere che utilizzo sistemi che hanno fino a 20 JVM su una macchina, e alcuni dei JVM possono essere corrotti.Si noti inoltre che non tutti i jvms possono eseguire tutti i file .Class

È stato utile?

Soluzione

Krakatau ha Un esempio di Aseybler File per il minimo ClassFile.

.class public minimal
.super java/lang/Object
.

Questo ti darà il più semplice possibile il cloudfile possibile che caricherà nel JVM. Non ha tutti i metadati opzionali che di solito riceverai da altri strumenti (Jasmin ad esempio aggiunge sempre un attributo sournyfile). Questo non è il file più breve possibile dal momento che puoi raderti alcuni byte accorciando il nome della classe, ma è fondamentalmente la classe più semplice possibile.

Si noti che mentre questa classe verrà caricato, non contiene alcun codice in modo da non poter essere significativamente Esegui . Se vuoi qualcosa è possibile eseguire come punto di ingresso, dovrai aggiungere una funzione principale. Questo può essere fatto adattando il Hello World Esempio per rimuovere il codice di stampa. .

.class public Code
.super java/lang/Object

.method public static main : ([Ljava/lang/String;)V
    .limit stack 10
    .limit locals 10

    return
.end method
.

Questo ti darà una lezione che è runnable e che restituisce immediatamente. Quindi è la classe più semplice possibile con una funzione principale.

Altri suggerimenti

the Kit di compatibilità Java (JCK) è sviluppato per questo scopo esatto.Un barattolo minimo non sarebbe sufficiente per verificare la correttezza dell'attuazione di JVM in quanto ci sono molti casi d'angolo da coprire e qualsiasi combinazione di istruzioni del codice byte deve essere supportata.

Se si desidera verificare se un programma minimo funziona, compila una semplice classe con un metodo main vuoto in un formato di file di classe Java nella versione 1. A causa della compatibilità all'indietro di Java, questo dovrebbe essere comprensibile da qualsiasi JVM e JVMdovrebbe uscire con il codice di stato 0.

Qualsiasi classe che dispone di un metodo principale può essere eseguito su qualsiasi JVM può essere il caso minimo per testare, ad esempio.:

class Hello {
    public static void main (String args[])
    {
        System.out.println("hello");
    }
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top