Mi sono chiesto a lungo se ci fosse un elenco completo di campi / campi (probabilmente statici) che memorizzano le informazioni di runtime per la JVM. Un elenco incompleto di esempi:
Qualcuno ha un link o qualcosa del genere?
EDIT: Non sono così stupido da non aver controllato i documenti per System e Runtime: P Mi stavo chiedendo se ci fossero altre classi in cui sono memorizzati metodi simili per determinare lo stato della macchina su cui stai lavorando.
Io uso questo codice per ottenere un controllo su alcune delle cose conosciute in classi Java che sono di particolare interesse per me.
import java.awt.*; import javax.swing.*; import javax.swing.border.EmptyBorder; import java.util.*; import java.security.*; /** A small GUId app. that shows many system and environment properties. Designed to be compatible with Java 1.4+ (hence many requirements like no foreach, no generics, no StringBuilder..). @author Andrew Thompson @version 2008-06-29 */ class SystemProperties { static String sentence = "The quick brown fox jumped over the lazy dog."; static String sep = System.getProperty("line.separator"); static String fontText = sentence + sep + sentence.toUpperCase() + sep + "0123456789 [email protected]#$%^&*()_+ []\\;',./ {}|:\"<>?"; static String[] convertObjectToSortedStringArray(Object[] unsorted) { String[] sorted = new String[unsorted.length]; for (int ii = 0; ii < sorted.length; ii++) { sorted[ii] = (String) unsorted[ii]; } Arrays.sort(sorted); return sorted; } static String dataPairToTableRow(String property, Object value) { String val = valueToString(property, value); return "" + "" + "" + property + "
" + " " + "" + val + " " + " "; } static String valueToString(String property, Object value) { if (value instanceof Color) { Color color = (Color) value; String converted = "" + value.toString() + ""; return converted; } else if (property.toLowerCase().endsWith("path") || property.toLowerCase().endsWith("dirs")) { return delimitedToHtmlList( (String) value, System.getProperty("path.separator")); } else { return value.toString(); } } static String delimitedToHtmlList(String values, String delimiter) { String[] parts = values.split(delimiter); StringBuffer sb = new StringBuffer(); sb.append(""); for (int ii = 0; ii < parts.length; ii++) { sb.append("- "); sb.append(parts[ii]); sb.append("
"); } return sb.toString(); } static Component getExampleOfFont(String fontFamily) { Font font = new Font(fontFamily, Font.PLAIN, 24); JTextArea ta = new JTextArea(); ta.setFont(font); ta.setText(fontText); ta.setEditable(false); // don't allow these to get focus, as it // interferes with desired scroll behavior ta.setFocusable(false); return ta; } static public JScrollPane getOutputWidgetForContent(String content) { JEditorPane op = new JEditorPane(); op.setContentType("text/html"); op.setEditable(false); op.setText(content); return new JScrollPane(op); } public static void main(String[] args) { JTabbedPane tabPane = new JTabbedPane(); StringBuffer sb; String header = ""; sb = new StringBuffer(header); Properties prop = System.getProperties(); String[] propStrings = convertObjectToSortedStringArray( prop.stringPropertyNames().toArray()); for (int ii = 0; ii < propStrings.length; ii++) { sb.append( dataPairToTableRow( propStrings[ii], System.getProperty(propStrings[ii]))); } tabPane.addTab( "System", getOutputWidgetForContent(sb.toString())); sb = new StringBuffer(header); Map environment = System.getenv(); String[] envStrings = convertObjectToSortedStringArray( environment.keySet().toArray()); for (int ii = 0; ii < envStrings.length; ii++) { sb.append( dataPairToTableRow( envStrings[ii], environment.get(envStrings[ii]))); } tabPane.addTab( "Environment", getOutputWidgetForContent(sb.toString())); sb = new StringBuffer(header); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int j = 0; j < gs.length; j++) { GraphicsDevice gd = gs[j]; sb.append( dataPairToTableRow( "Device " + j, gd.toString() + " " + gd.getIDstring())); GraphicsConfiguration[] gc = gd.getConfigurations(); for (int i = 0; i < gc.length; i++) { sb.append( dataPairToTableRow( "Config " + i, (int) gc[i].getBounds().getWidth() + "x" + (int) gc[i].getBounds().getHeight() + " " + gc[i].getColorModel() + ", " + " Accelerated: " + gc[i].getImageCapabilities().isAccelerated() + " True Volatile: " + gc[i].getImageCapabilities().isTrueVolatile())); } } tabPane.addTab( "Graphics Environment", getOutputWidgetForContent(sb.toString())); String[] fonts = ge.getAvailableFontFamilyNames(); JPanel fontTable = new JPanel(new BorderLayout(3, 1)); // to enable key based scrolling in the font panel fontTable.setFocusable(true); JPanel fontNameCol = new JPanel(new GridLayout(0, 1, 2, 2)); JPanel fontExampleCol = new JPanel(new GridLayout(0, 1, 2, 2)); fontTable.add(fontNameCol, BorderLayout.WEST); fontTable.add(fontExampleCol, BorderLayout.CENTER); for (int ii = 0; ii < fonts.length; ii++) { fontNameCol.add(new JLabel(fonts[ii])); fontExampleCol.add(getExampleOfFont(fonts[ii])); } tabPane.add("Fonts", new JScrollPane(fontTable)); sb = new StringBuffer(header); sb.append(""); sb.append(""); sb.append(""); sb.append("Code"); sb.append(" "); sb.append(""); sb.append("Language"); sb.append(" "); sb.append(""); sb.append("Country"); sb.append(" "); sb.append(""); sb.append("Variant"); sb.append(" "); sb.append(" "); sb.append(""); Locale[] locales = Locale.getAvailableLocales(); SortableLocale[] sortableLocale = new SortableLocale[locales.length]; for (int ii = 0; ii < locales.length; ii++) { sortableLocale[ii] = new SortableLocale(locales[ii]); } Arrays.sort(sortableLocale); for (int ii = 0; ii < locales.length; ii++) { String prefix = ""; String suffix = ""; Locale locale = sortableLocale[ii].getLocale(); if (locale.equals(Locale.getDefault())) { prefix = ""; suffix = ""; } sb.append(dataPairToTableRow( prefix + locale.toString() + suffix, prefix + locale.getDisplayLanguage() + suffix + "" + prefix + locale.getDisplayCountry() + suffix + " " + prefix + locale.getDisplayVariant() + suffix)); } tabPane.add("Locales", getOutputWidgetForContent(sb.toString())); Locale.getDefault(); int border = 5; JPanel p = new JPanel(new BorderLayout()); p.setBorder(new EmptyBorder(border, border, border, border)); p.add(tabPane, BorderLayout.CENTER); p.setPreferredSize(new Dimension(400, 400)); JFrame f = new JFrame("Properties"); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); f.getContentPane().add(p, BorderLayout.CENTER); f.pack(); f.setMinimumSize(f.getPreferredSize()); f.setSize(600, 500); f.setLocationRelativeTo(null); f.setVisible(true); } } class SortableLocale implements Comparable { Locale locale; SortableLocale(Locale locale) { this.locale = locale; } public String toString() { return locale.toString(); } public Locale getLocale() { return locale; } public int compareTo(Object object2) { SortableLocale locale2 = (SortableLocale) object2; //Locale locale2 = (Locale)object2; return locale.toString().compareTo( locale2.toString()); } }
Proprietà correlate al suono sintetizzato e campionato e alle immagini.
/* */ import javax.imageio.ImageIO; import javax.sound.sampled.*; import javax.sound.midi.*; import java.awt.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.tree.*; import javax.swing.event.*; import javax.swing.text.Position; public class MediaTypes extends JApplet { JTable table; boolean sortable = false; JTree tree; @Override public void init() { Runnable r = () -> { MediaTypes mediaTypes = new MediaTypes(); String show = ""; if (getParameter("show")!=null) { show = getParameter("show"); } JPanel p = new JPanel(); mediaTypes.createGui(p, show); add(p); validate(); }; SwingUtilities.invokeLater(r); } public static void main(String[] args) { Runnable r = () -> { MediaTypes mediaTypes = new MediaTypes(); JPanel p = new JPanel(); mediaTypes.createGui(p); JOptionPane.showMessageDialog(null,p); }; SwingUtilities.invokeLater(r); } public Object[][] mergeArrays(String name1, Object[] data1, String name2, Object[] data2) { Object[][] data = new Object[data1.length+data2.length][2]; for (int ii=0; ii { if (sortable) { output.setText("Click table column headers to sort."); } DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (node == null) return; Object nodeInfo = node.getUserObject(); if (nodeInfo instanceof MediaData) { MediaData mediaData = (MediaData)nodeInfo; table.setModel( new DefaultTableModel( mediaData.getData(), mediaData.getColumnNames()) ); } }); for (int ii=0; ii
Potresti anche indagare su:
InetAddress
KeyStore
CookieManager
KeyManagerFactory
LogManager
Questa class stampa un bel po ‘di cose sullo stdout
import java.util.Properties; import java.util.logging.LogManager; import javax.net.ssl.KeyManagerFactory; import java.util.Date; import java.util.Enumeration; import java.util.Locale; import java.util.Map.Entry; import java.awt.DisplayMode; import java.awt.GraphicsConfiguration; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.ImageCapabilities; import java.io.File; import java.io.PrintStream; import java.nio.file.Paths; import java.security.KeyStore; import java.lang.management.ClassLoadingMXBean; import java.lang.management.ManagementFactory; import java.lang.management.OperatingSystemMXBean; import java.net.InetAddress; import java.net.UnknownHostException; public class JavaInfo { public static PrintStream out = System.out; public static void printCurrentTime() { out.println("current date " + new Date()); out.println("nano time "+System.nanoTime()); } public static void printSystemEnvironment() { for (Entry e : System.getenv().entrySet()) out.println(e.getKey()+" "+e.getValue()); } public static void printSystemProperties() { Properties props = System.getProperties(); Enumeration