/home/wpollock1/public_html/AJava/ShowProps.java

// Property and environment lister demo (WebStart+ runnable Jar), as a
// Simple AWT app.
// Shows all system properties that an Applet/WebStaret app can look at.
// Can use this to experiment with Policy Files:  Run, then
// re-run after granting this app read permission on some
// normally forbidden System Property.  This program can also be downloaded
// and is a runnable Jar; in that mode, no properties are forbidden.  Finally,
// We also show all accessible environment variables.
//
// (C) 2000-2018 by Wayne Pollock, Tampa Florida USA.  All Rights Reserved.

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class ShowProps
{
   private static final java.util.List<String> defaultListOfSystemProperties =
   Arrays.asList(
     "awt.toolkit", "file.encoding", "file.encoding.pkg", "file.separator",
     "java.awt.graphicsenv", "java.awt.printerjob", "java.class.path",
     "java.class.version", "java.home", "java.io.tmpdir",
     "java.library.path", "java.runtime.name", "java.runtime.version",
     "java.specification.name", "java.specification.vendor",
     "java.specification.version", "java.vendor", "java.vendor.url",
     "java.vendor.url.bug", "java.version", "java.vm.compressedOopsMode",
     "java.vm.info", "java.vm.name",
     "java.vm.specification.name", "java.vm.specification.vendor",
     "java.vm.specification.version", "java.vm.vendor", "java.vm.version",
     "jdk.debug", "line.separator", "os.arch", "os.name", "os.version",
     "path.separator", "sun.arch.data.model", "sun.awt.enableExtraMouseButtons",
     "sun.boot.library.path", "sun.cpu.endian", "sun.cpu.isalist",
     "sun.desktop", "sun.io.unicode.encoding", "sun.java.command",
     "sun.java.launcher", "sun.jnu.encoding", "sun.management.compiler",
     "sun.os.patch.level", "sun.stderr.encoding", "sun.stdout.encoding",
     "user.country", "user.dir", "user.home", "user.language",
     "user.name", "user.script", "user.timezone", "user.variant"
   );


   public static void main ( String[] args) {
      // Set up GUI:
      Frame f = new Frame( "ShowProps" );
      TextArea ta;
      f.setLayout( new BorderLayout() );
      f.setBackground( Color.white );
      ta = new TextArea();
      f.addWindowListener( new WindowAdapter() {
         public void windowClosing ( WindowEvent we ) {
            System.exit( 0 );
         }
      });
      f.add( ta, BorderLayout.CENTER );
      ta.setEditable( false );
      f.setSize( 900, 800 );  // Height is a guess to fit on most monitors
      f.setLocationRelativeTo(null);  // Center on screen

      ta.append(  "======= System property list =======\n\n" );

      // Obtain a sorted list of property names:
      java.util.List<String> props = new ArrayList<>();
      try {
          Set<String> propNames= System.getProperties().stringPropertyNames();
          for ( final String name : propNames ) {
             props.add( name );
          }
      }
      catch ( SecurityException se )
      {  ta.append( " (Using default property list)\n\n" );
         props = defaultListOfSystemProperties;
      }

      props.sort( String::compareToIgnoreCase );

      // Add each property name and value (if not restricted) to the output:
      for ( final String prop: props ) {
         String value;
         try { value = System.getProperty( prop ); }
         catch ( SecurityException se ) { value = "***Restricted***"; }

         ta.append( prop + " = \"" + value + "\"\n" );
      }

      // Append list of environment variables and their values
      // (note these are sorted case-sensitively):
      ta.append(  "\n\n=======Environment variable list=======\n\n" );
      try {
         SortedMap<String,String> env = new TreeMap<>( System.getenv() );
         for ( final String name : env.keySet() ) {
            ta.append( name + " = \"" + env.get( name ) + "\"\n" );
         }
      } catch ( Exception e ) { ta.append( "\n***Restricted***\n" ); }
      ta.append( "\n" );

      ta.setCaretPosition( 0 );  // Scroll back to top
      f.setVisible( true );
   }
}