Bom dia,
As Applets nao fazem quaze nada, por questões de segurança. Mas toda maneira utilise JavaWebStart .... JavaFX
O JAVA e JRE e JVM sao feitos par ser separados do OS e muito mais do hardware.
Mas as aplicações JAVA fazem todo o quaze todo, o problema : o codigo para cada Sistema (OS) deve ser diferente.
Existe o menos 3 tecnicas par obter informaçaos sobre : sistema java / sistema OS / harware :
1-a ) Informções vistas por java JVM :
public class TestVarsJava {
public static void main(String[] args)
{
java.util.Enumeration liste = System.getProperties().propertyNames();
String cle;
while( liste.hasMoreElements() ) {
cle = (String)liste.nextElement();
System.out.println( cle + " = " + System.getProperty(cle) );
}
}
}
1-b ) Utilizaçao das API java :
exemplos : File , FileSystemView
import java.io.File;
import javax.swing.filechooser.FileSystemView;
public class DriveTypeInfo
{
public static void main (String [] args)
{
System.out.println("File system roots returned by FileSystemView.getFileSystemView():");
FileSystemView fsv = FileSystemView.getFileSystemView();
File[] roots = fsv.getRoots();
for (int i = 0; i < roots.length; i++)
{
System.out.println("Root: " + roots[i]);
}
System.out.println("Home directory: " + fsv.getHomeDirectory());
System.out.println("File system roots returned by File.listRoots():");
File[] f = File.listRoots();
for (int i = 0; i < f.length; i++)
{
System.out.println("Drive: " + f[i]);
System.out.println("Display name: " + fsv.getSystemDisplayName(f[i]));
System.out.println("Is drive: " + fsv.isDrive(f[i]));
System.out.println("Is floppy: " + fsv.isFloppyDrive(f[i]));
System.out.println("Readable: " + f[i].canRead());
System.out.println("Writable: " + f[i].canWrite());
System.out.println("Total space: " + f[i].getTotalSpace());
System.out.println("Usable space: " + f[i].getUsableSpace());
}
}
}
Exemplo : InetAddress , NetworkInterface
import java.net.*;
import java.io.*;
import java.applet.*;
import java.util.*;
import static java.lang.System.out;
public class GetClientIP
{
public static void main(String[] args) {
try {
InetAddress Ip =InetAddress.getLocalHost();
System.out.println("IP: "+Ip.getHostAddress());
System.out.println("HostName: "+Ip.getCanonicalHostName());
System.out.println("---------------------------------------------");
System.out.println("Lists all the network interfaces and their addresses on a machine:");
getInfos();
}
catch(Exception e) {
e.printStackTrace();
}
}
static void getInfos() throws SocketException
{
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets))
displayInterfaceInformation(netint);
}
static void displayInterfaceInformation(NetworkInterface netint) throws SocketException
{
out.printf("Display name: %s\n", netint.getDisplayName());
out.printf("Name: %s\n", netint.getName());
byte[] mac = netint.getHardwareAddress(); // a byte array containing the address (usually MAC) or null
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
for (InetAddress inetAddress : Collections.list(inetAddresses)) {
out.printf("InetAddress: %s\n", inetAddress);
}
out.printf("\n");
}
}
Exemplo : nbr de Processors
int nbProc = Runtime.getRuntime().availableProcessors();
Exemplo : Méga Octets na carta grafica
public static int getAvailableMemory(){
// graphique env
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
// carta grafica
GraphicsDevice device = environment.getDefaultScreenDevice();
// Méga Octets na carta grafica
int bytes = device.getAvailableAcceleratedMemory();
int mbytes = bytes /1048576;
return mbytes;
}
2- Utiliza commands : Runtime.getRuntime().exec(....)
Ver exemplo de Daniel.F
3- Utiliza para as autras Informações : JNI
Abraços !
Cordialement !
Best regards !