Buscando dados do equipamento

Olá.

Através do C# é possível coletar dados do equipamento no qual está rodando o programa, como no código abaixo:


// Lista todos os processadores existente no equipamento
				SelectQuery queryCPU = new SelectQuery("Win32_Processor"); 
				ManagementObjectSearcher searcherCPU = new ManagementObjectSearcher(queryCPU); 
				foreach (ManagementBaseObject envVarCPU in searcherCPU.Get())
					Array_add_sys("cpu", 
						envVarCPU["Caption"].ToString() ,
						envVarCPU["Name"].ToString().TrimStart());


// Lista todos os discos, seu sistema de arquivo e espaço disponível
				SelectQuery queryDisk = new SelectQuery("Win32_LogicalDisk", "DriveType = 3"); 
				ManagementObjectSearcher searcherDisk = new ManagementObjectSearcher(queryDisk); 
				foreach (ManagementBaseObject envVarDisk in searcherDisk.Get())
				{
					Array_add_sys( "disk", 
						envVarDisk["Caption"].ToString(),
						envVarDisk["FileSystem"].ToString());
					Array_add_sys( "disk size", 
						envVarDisk["Caption"].ToString(),
						envVarDisk["Size"].ToString());
					Array_add_sys( "disk free", 
						envVarDisk["Caption"].ToString(),
						envVarDisk["FreeSpace"].ToString());
				}

Como faço o mesmo em Java ?

Você consegue pegar os dados do equipamento em Java assim:

        Enumeration sysProps = System.getProperties().keys();
        while (sysProps.hasMoreElements())
        {
            String propriedade = (String) sysProps.nextElement();
            System.out.println(propriedade + ": " + System.getProperties().getProperty(propriedade));
        }

Ele retorna alguma informação sobre CPU, mas nada sobre HD.

Geralmente para informações mais específicas é necessário uso de JNI.