原文地址:

By Artem Ananiev and Alla Redko, June 2006    

Articles Index

This article explains how to use the headless mode capabilities of the Java Platform, Standard Edition (Java SE, formerly referred to as J2SE).

Headless mode is a system configuration in which the display device, keyboard, or mouse is lacking. Sounds unexpected, but actually you can perform different operations in this mode, even with graphic data.

Where it is applicable? Let's say that your application repeatedly generates a certain image, for example, a graphical authorization code that must be changed every time a user logs in to the system. When creating an image, your application needs neither the display nor the keyboard. Let's assume now that you have a mainframe or dedicated server on your project that has no display device, keyboard, or mouse. The ideal decision is to use this environment's substantial computing power for the visual as well as the nonvisual features. An image that was generated in the headless mode system then can be passed to the headful system for further rendering.

Many methods in the java.awt.Toolkitand java.awt.GraphicsEnvironmentclasses, with the exception of fonts, imaging, and printing, require the availability of a display device, keyboard, and mouse. But some classes, such as Canvas or Panel, can be executed in headless mode. Headless mode support has been available since the J2SE 1.4 platform.

Note: This article will point the reader to documentation for version 6 of the Java SE platform. Any API additions or other enhancements to the Java SE platform specification are subject to review and approval by the JSR 270 Expert Group.

Toolkit

The java.awt.Toolkit class is an abstract superclass of all actual implementations of the Abstract Window Toolkit (AWT). Subclasses of Toolkit are used to bind the various AWT components to particular native toolkit implementations.

Many components are affected if a display device, keyboard, or mouse is not supported. An appropriate class constructor throws a HeadlessException:

Such heavyweight components require a peer at the operating-system level, which cannot be guaranteed on headless machines.

Methods related to Canvas, Panel, and Image components do not need to throw aHeadlessExceptionbecause these components can be given empty peers and treated as lightweight components.

The Headless toolkit also binds the Java technology components to the native resources, but it does so when resources don't include a display device or input devices.

Graphics Environment

The java.awt.GraphicsEnvironment class is an abstract class that describes the collection ofGraphicsDevice objects and Font objects available to a Java technology application on a particular platform. The resources in this GraphicsEnvironment might be local or on a remote machine. GraphicsDevice objects can be monitors, printers, or image buffers and are the destination of Graphics2D drawing methods. Each GraphicsDevice has manyGraphicsConfiguration objects associated with it. These objects specify the different configurations in which the GraphicsDevice can be used.

Table 1 shows the GraphicsEnvironment methods that check for headless mode support.

Table 1. The Headless Mode Methods
 
Method Description
public static boolean 
isHeadless()
Tests whether the environment is headless, and therefore does not support a display device, keyboard, or mouse. If this method returnstrue, a HeadlessException is thrown from areas of the Toolkit andGraphicsEnvironment classes that depend on a display device, keyboard, or mouse.
public boolean 
isHeadlessInstance()
Returns whether this GraphicsEnvironment can support a display device, keyboard, or mouse. If this method returns true, aHeadlessException is thrown from areas of theGraphicsEnvironment that depend on a display device, keyboard, or mouse.

Note: The isHeadless() method checks the specific system property, java.awt.headless, instead of the system's hardware configuration.

HeadlessException is thrown when code that depends on a display device, keyboard, or mouse is called in an environment that does not support any of these. The exception is derived from an UnsupportedOperationException, which is itself derived from a RuntimeException.

Setting Up Headless Mode

To use headless mode operations, you must first understand how to check and set up the system properties related to this mode. In addition, you must understand how to create a default toolkit to use the headless implementation of the Toolkit class.

System Properties Setup

To set up headless mode, set the appropriate system property by using the setProperty()method. This method enables you to set the desired value for the system property that is indicated by the specific key.

System.setProperty("java.awt.headless", "true");

In this code, java.awt.headless is a system property, and true is a value that is assigned to it.

You can also use the following command line if you plan to run the same application in both a headless and a traditional environment:

java -Djava.awt.headless=true

Default Toolkit Creation

If a system property named java.awt.headless is set to true, then the headless implementation of Toolkit is used. Use the getDefaultToolkit() method of the Toolkit class to create an instance of headless toolkit:

Toolkit tk = Toolkit.getDefaultToolkit();

Headless Mode Check

To check the availability of headless mode, use the isHeadless() method of theGraphicsEnvironment class:

GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
boolean headless_check = ge.isHeadless();

This method checks the java.awt.headless system property. If this property has a true value, then a HeadlessException will be thrown from areas of the Toolkit andGraphicsEnvironment classes that are dependent on a display device, keyboard, or mouse.

Operating in Headless Mode

After setting up headless mode and creating an instance of the headless toolkit, your application can perform the following operations:

  • Create lightweight components such as Canvas, Panel, and Swing components, except the top levels
  • Obtain information about available fonts, font metrics, and font settings
  • Set color for rendering text and graphics
  • Create and obtain images and prepare images for rendering
  • Print using java.awt.PrintJobjava.awt.print.*, and javax.print.* classes
  • Emit an audio beep

Canvas

The following code represents a blank rectangular area of the screen onto which you can draw lines. To create a new Canvas component, use the Canvas class.

        final Canvas c = new Canvas()
{
public void paint(Graphics g)
{
Rectangle r = getBounds();
g.drawLine(0, 0, r.width - 1, r.height - 1);
g.drawLine(0, r.height - 1, r.width - 1, 0);
}
};

Fonts

This code shows how to set the font with the Font class to draw a text string. The Graphics object is used to render this string.

      public void paint(Graphics g)
{
g.setFont(new Font("Arial", Font.ITALIC, 12));
g.drawString("Test", 32, 8);
}

Colors

This code shows how to set the color with the specified red, green, and blue values in order to draw a line. The Graphics object is used to render this line.

  public void paint(Graphics g)
{
g.setColor(new Color(255, 127, 0));
g.drawLine(0, r.height - 1, r.width - 1, 0);
}

Images

In the following code, the read method of the javax.imageio.ImageIO class decodes thegrapefruit.jpg image file shown in Figure 1 and returns a buffered image.

        Image i = null;
try
{
File f = new File("grapefruit.jpg");
i = ImageIO.read(f);
}
catch (Exception z)
{
z.printStackTrace(System.err);
}
 
Figure 1. The grapefruit.jpg Image File

Print

This code shows how to print a prepared canvas that enables you to define the printer as the default surface for the paint method.

PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(new Printable()
{
public int print(Graphics g, PageFormat pf, int pageIndex)
{
if (pageIndex > 0)
{
return Printable.NO_SUCH_PAGE;
} ((Graphics2D)g).translate(pf.getImageableX(),
pf.getImageableY()); // Paint canvas.
c.paint(g); return Printable.PAGE_EXISTS;
}
});

Beep

The following code shows how to produce a simple beep sound by using the Toolkit class's beepmethod.

Toolkit tk = Toolkit.getDefaultToolkit();
tk.beep();
Using Headless Mode: An Example

The following HeadlessBasics example uses all the capabilities described in this article.

To run this example, compile the following code by using the javac compiler. Copy the image filegrapefruit.jpg to the directory that contains the HeadlessBasics class.

import java.awt.*;
import java.io.*;
import java.awt.print.*; import javax.imageio.*; public class HeadlessBasics
{
public static void main(String[] args)
{
// Set system property.
// Call this BEFORE the toolkit has been initialized, that is,
// before Toolkit.getDefaultToolkit() has been called.
System.setProperty("java.awt.headless", "true"); // This triggers creation of the toolkit.
// Because java.awt.headless property is set to true, this
// will be an instance of headless toolkit.
Toolkit tk = Toolkit.getDefaultToolkit();
// Standard beep is available.
tk.beep(); // Check whether the application is
// running in headless mode.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
System.out.println("Headless mode: " + ge.isHeadless()); // No top levels are allowed.
boolean created = false;
try
{
Frame f = new Frame("Frame");
created = true;
}
catch (Exception z)
{
z.printStackTrace(System.err);
created = false;
}
System.err.println("Frame is created: " + created); // No other components except Canvas and Panel are allowed.
created = false;
try
{
Button b = new Button("Button");
created = true;
}
catch (Exception z)
{
z.printStackTrace(System.err);
created = false;
}
System.err.println("Button is created: " + created); // Canvases can be created.
final Canvas c = new Canvas()
{
public void paint(Graphics g)
{
Rectangle r = getBounds();
g.drawLine(0, 0, r.width - 1, r.height - 1);
// Colors work too.
g.setColor(new Color(255, 127, 0));
g.drawLine(0, r.height - 1, r.width - 1, 0);
// And fonts
g.setFont(new Font("Arial", Font.ITALIC, 12));
g.drawString("Test", 32, 8);
}
};
// And all the operations work correctly.
c.setBounds(32, 32, 128, 128); // Images are available.
Image i = null;
try
{
File f = new File("grapefruit.jpg");
i = ImageIO.read(f);
}
catch (Exception z)
{
z.printStackTrace(System.err);
}
final Image im = i; // Print system is available.
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(new Printable()
{
public int print(Graphics g, PageFormat pf, int pageIndex)
{
if (pageIndex > 0)
{
return Printable.NO_SUCH_PAGE;
}
((Graphics2D)g).translate(pf.getImageableX(),
pf.getImageableY()); // Paint the canvas.
c.paint(g); // Paint the image.
if (im != null)
{
g.drawImage(im, 32, 32, 64, 64, null);
} return Printable.PAGE_EXISTS;
}
});
try
{
pj.print();
}
catch (Exception z)
{
z.printStackTrace(System.err);
}
}
}

Figure 2 shows the printed output from this example.

 
Figure 2. The HeadlessBasics Printed Output

Also, you can expect to see the following messages:

Headless mode: true
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at HeadlessBasics.main(HeadlessBasics.java:24)
Frame is created: false
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
at java.awt.Button.<init>(Unknown Source)
at HeadlessBasics.main(HeadlessBasics.java:39)
Button is created: false

Note: For demonstration purposes, the original sample code causes the application to throw twojava.awt.HeadlessExceptions.

As an alternative, you can forward the standard output messages to a file and print out the file. In this case, use the following command line to run this example:

java HeadlessBasics 2> standard_output.txt
Converting an Existing Application to Headless Mode

How can you convert your existing application to execute it in headless mode? The most effective way to perform this conversion is to analyze your source code in order to determine any functionality that is dependent on headless mode. In other words, to implement the same functionality, you have to find those methods and classes that can throw a HeadlessExceptionand replace them with the methods and classes that are independent of headless mode.

You can use the Java SE 6 API specification to determine whether a specific method or class is supported in headless mode or not. If a specific component is not supported in headless mode, the only exception your application needs to catch is a HeadlessException. It will be thrown first among the other possible exceptions. That is why the code sample in the section "Example: Using Headless Mode" contains no special requirement to catch the other exceptions.

You will certainly find other useful ways to apply the advantages of headless mode. We hope that this article can help you to accomplish this task and open new horizons in the Java SE platform.

For More Information

AWT Enhancements in J2SE 1.4: Headless Support 
J2SE 1.4 platform documentation: HeadlessException
The New Modality API in Java SE 6 
The java.awt.Toolkit Class
The java.awt.GraphicsEnvironment Class

About the Authors

Artem Ananiev is a Sun Microsystems software engineer in Saint Petersburg, Russia. He has been working in the Abstract Window Toolkit (AWT) project for several years, with his primary functional areas in modality, robot, and multiscreen systems.

Alla Redko is a Sun Microsystems technical writer in Saint Petersburg, Russia. She supports documentation for the AWT project and updates the Java Tutorial. Prior to her assignment for Sun, she worked as a technical writer for eight years.

By Artem Ananiev and Alla Redko, June 2006    

Articles Index

This article explains how to use the headless mode capabilities of the Java Platform, Standard Edition (Java SE, formerly referred to as J2SE).

Headless mode is a system configuration in which the display device, keyboard, or mouse is lacking. Sounds unexpected, but actually you can perform different operations in this mode, even with graphic data.

Where it is applicable? Let's say that your application repeatedly generates a certain image, for example, a graphical authorization code that must be changed every time a user logs in to the system. When creating an image, your application needs neither the display nor the keyboard. Let's assume now that you have a mainframe or dedicated server on your project that has no display device, keyboard, or mouse. The ideal decision is to use this environment's substantial computing power for the visual as well as the nonvisual features. An image that was generated in the headless mode system then can be passed to the headful system for further rendering.

Many methods in the java.awt.Toolkitand java.awt.GraphicsEnvironmentclasses, with the exception of fonts, imaging, and printing, require the availability of a display device, keyboard, and mouse. But some classes, such as Canvas or Panel, can be executed in headless mode. Headless mode support has been available since the J2SE 1.4 platform.

Note: This article will point the reader to documentation for version 6 of the Java SE platform. Any API additions or other enhancements to the Java SE platform specification are subject to review and approval by the JSR 270 Expert Group.

Toolkit

The java.awt.Toolkit class is an abstract superclass of all actual implementations of the Abstract Window Toolkit (AWT). Subclasses of Toolkit are used to bind the various AWT components to particular native toolkit implementations.

Many components are affected if a display device, keyboard, or mouse is not supported. An appropriate class constructor throws a HeadlessException:

Such heavyweight components require a peer at the operating-system level, which cannot be guaranteed on headless machines.

Methods related to Canvas, Panel, and Image components do not need to throw aHeadlessExceptionbecause these components can be given empty peers and treated as lightweight components.

The Headless toolkit also binds the Java technology components to the native resources, but it does so when resources don't include a display device or input devices.

Graphics Environment

The java.awt.GraphicsEnvironment class is an abstract class that describes the collection ofGraphicsDevice objects and Font objects available to a Java technology application on a particular platform. The resources in this GraphicsEnvironment might be local or on a remote machine. GraphicsDevice objects can be monitors, printers, or image buffers and are the destination of Graphics2D drawing methods. Each GraphicsDevice has manyGraphicsConfiguration objects associated with it. These objects specify the different configurations in which the GraphicsDevice can be used.

Table 1 shows the GraphicsEnvironment methods that check for headless mode support.

Table 1. The Headless Mode Methods
 
Method Description
public static boolean 
isHeadless()
Tests whether the environment is headless, and therefore does not support a display device, keyboard, or mouse. If this method returnstrue, a HeadlessException is thrown from areas of the Toolkit andGraphicsEnvironment classes that depend on a display device, keyboard, or mouse.
public boolean 
isHeadlessInstance()
Returns whether this GraphicsEnvironment can support a display device, keyboard, or mouse. If this method returns true, aHeadlessException is thrown from areas of theGraphicsEnvironment that depend on a display device, keyboard, or mouse.

Note: The isHeadless() method checks the specific system property, java.awt.headless, instead of the system's hardware configuration.

HeadlessException is thrown when code that depends on a display device, keyboard, or mouse is called in an environment that does not support any of these. The exception is derived from an UnsupportedOperationException, which is itself derived from a RuntimeException.

Setting Up Headless Mode

To use headless mode operations, you must first understand how to check and set up the system properties related to this mode. In addition, you must understand how to create a default toolkit to use the headless implementation of the Toolkit class.

System Properties Setup

To set up headless mode, set the appropriate system property by using the setProperty()method. This method enables you to set the desired value for the system property that is indicated by the specific key.

System.setProperty("java.awt.headless", "true");

In this code, java.awt.headless is a system property, and true is a value that is assigned to it.

You can also use the following command line if you plan to run the same application in both a headless and a traditional environment:

java -Djava.awt.headless=true

Default Toolkit Creation

If a system property named java.awt.headless is set to true, then the headless implementation of Toolkit is used. Use the getDefaultToolkit() method of the Toolkit class to create an instance of headless toolkit:

Toolkit tk = Toolkit.getDefaultToolkit();

Headless Mode Check

To check the availability of headless mode, use the isHeadless() method of theGraphicsEnvironment class:

GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
boolean headless_check = ge.isHeadless();

This method checks the java.awt.headless system property. If this property has a true value, then a HeadlessException will be thrown from areas of the Toolkit andGraphicsEnvironment classes that are dependent on a display device, keyboard, or mouse.

Operating in Headless Mode

After setting up headless mode and creating an instance of the headless toolkit, your application can perform the following operations:

  • Create lightweight components such as Canvas, Panel, and Swing components, except the top levels
  • Obtain information about available fonts, font metrics, and font settings
  • Set color for rendering text and graphics
  • Create and obtain images and prepare images for rendering
  • Print using java.awt.PrintJobjava.awt.print.*, and javax.print.* classes
  • Emit an audio beep

Canvas

The following code represents a blank rectangular area of the screen onto which you can draw lines. To create a new Canvas component, use the Canvas class.

        final Canvas c = new Canvas()
{
public void paint(Graphics g)
{
Rectangle r = getBounds();
g.drawLine(0, 0, r.width - 1, r.height - 1);
g.drawLine(0, r.height - 1, r.width - 1, 0);
}
};

Fonts

This code shows how to set the font with the Font class to draw a text string. The Graphics object is used to render this string.

      public void paint(Graphics g)
{
g.setFont(new Font("Arial", Font.ITALIC, 12));
g.drawString("Test", 32, 8);
}

Colors

This code shows how to set the color with the specified red, green, and blue values in order to draw a line. The Graphics object is used to render this line.

  public void paint(Graphics g)
{
g.setColor(new Color(255, 127, 0));
g.drawLine(0, r.height - 1, r.width - 1, 0);
}

Images

In the following code, the read method of the javax.imageio.ImageIO class decodes thegrapefruit.jpg image file shown in Figure 1 and returns a buffered image.

        Image i = null;
try
{
File f = new File("grapefruit.jpg");
i = ImageIO.read(f);
}
catch (Exception z)
{
z.printStackTrace(System.err);
}
 
Figure 1. The grapefruit.jpg Image File

Print

This code shows how to print a prepared canvas that enables you to define the printer as the default surface for the paint method.

PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(new Printable()
{
public int print(Graphics g, PageFormat pf, int pageIndex)
{
if (pageIndex > 0)
{
return Printable.NO_SUCH_PAGE;
} ((Graphics2D)g).translate(pf.getImageableX(),
pf.getImageableY()); // Paint canvas.
c.paint(g); return Printable.PAGE_EXISTS;
}
});

Beep

The following code shows how to produce a simple beep sound by using the Toolkit class's beepmethod.

Toolkit tk = Toolkit.getDefaultToolkit();
tk.beep();
Using Headless Mode: An Example

The following HeadlessBasics example uses all the capabilities described in this article.

To run this example, compile the following code by using the javac compiler. Copy the image filegrapefruit.jpg to the directory that contains the HeadlessBasics class.

import java.awt.*;
import java.io.*;
import java.awt.print.*; import javax.imageio.*; public class HeadlessBasics
{
public static void main(String[] args)
{
// Set system property.
// Call this BEFORE the toolkit has been initialized, that is,
// before Toolkit.getDefaultToolkit() has been called.
System.setProperty("java.awt.headless", "true"); // This triggers creation of the toolkit.
// Because java.awt.headless property is set to true, this
// will be an instance of headless toolkit.
Toolkit tk = Toolkit.getDefaultToolkit();
// Standard beep is available.
tk.beep(); // Check whether the application is
// running in headless mode.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
System.out.println("Headless mode: " + ge.isHeadless()); // No top levels are allowed.
boolean created = false;
try
{
Frame f = new Frame("Frame");
created = true;
}
catch (Exception z)
{
z.printStackTrace(System.err);
created = false;
}
System.err.println("Frame is created: " + created); // No other components except Canvas and Panel are allowed.
created = false;
try
{
Button b = new Button("Button");
created = true;
}
catch (Exception z)
{
z.printStackTrace(System.err);
created = false;
}
System.err.println("Button is created: " + created); // Canvases can be created.
final Canvas c = new Canvas()
{
public void paint(Graphics g)
{
Rectangle r = getBounds();
g.drawLine(0, 0, r.width - 1, r.height - 1);
// Colors work too.
g.setColor(new Color(255, 127, 0));
g.drawLine(0, r.height - 1, r.width - 1, 0);
// And fonts
g.setFont(new Font("Arial", Font.ITALIC, 12));
g.drawString("Test", 32, 8);
}
};
// And all the operations work correctly.
c.setBounds(32, 32, 128, 128); // Images are available.
Image i = null;
try
{
File f = new File("grapefruit.jpg");
i = ImageIO.read(f);
}
catch (Exception z)
{
z.printStackTrace(System.err);
}
final Image im = i; // Print system is available.
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(new Printable()
{
public int print(Graphics g, PageFormat pf, int pageIndex)
{
if (pageIndex > 0)
{
return Printable.NO_SUCH_PAGE;
}
((Graphics2D)g).translate(pf.getImageableX(),
pf.getImageableY()); // Paint the canvas.
c.paint(g); // Paint the image.
if (im != null)
{
g.drawImage(im, 32, 32, 64, 64, null);
} return Printable.PAGE_EXISTS;
}
});
try
{
pj.print();
}
catch (Exception z)
{
z.printStackTrace(System.err);
}
}
}

Figure 2 shows the printed output from this example.

 
Figure 2. The HeadlessBasics Printed Output

Also, you can expect to see the following messages:

Headless mode: true
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
at java.awt.Window.<init>(Unknown Source)
at java.awt.Frame.<init>(Unknown Source)
at HeadlessBasics.main(HeadlessBasics.java:24)
Frame is created: false
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
at java.awt.Button.<init>(Unknown Source)
at HeadlessBasics.main(HeadlessBasics.java:39)
Button is created: false

Note: For demonstration purposes, the original sample code causes the application to throw twojava.awt.HeadlessExceptions.

As an alternative, you can forward the standard output messages to a file and print out the file. In this case, use the following command line to run this example:

java HeadlessBasics 2> standard_output.txt
Converting an Existing Application to Headless Mode

How can you convert your existing application to execute it in headless mode? The most effective way to perform this conversion is to analyze your source code in order to determine any functionality that is dependent on headless mode. In other words, to implement the same functionality, you have to find those methods and classes that can throw a HeadlessExceptionand replace them with the methods and classes that are independent of headless mode.

You can use the Java SE 6 API specification to determine whether a specific method or class is supported in headless mode or not. If a specific component is not supported in headless mode, the only exception your application needs to catch is a HeadlessException. It will be thrown first among the other possible exceptions. That is why the code sample in the section "Example: Using Headless Mode" contains no special requirement to catch the other exceptions.

You will certainly find other useful ways to apply the advantages of headless mode. We hope that this article can help you to accomplish this task and open new horizons in the Java SE platform.

For More Information

AWT Enhancements in J2SE 1.4: Headless Support 
J2SE 1.4 platform documentation: HeadlessException
The New Modality API in Java SE 6 
The java.awt.Toolkit Class
The java.awt.GraphicsEnvironment Class

About the Authors

Artem Ananiev is a Sun Microsystems software engineer in Saint Petersburg, Russia. He has been working in the Abstract Window Toolkit (AWT) project for several years, with his primary functional areas in modality, robot, and multiscreen systems.

Alla Redko is a Sun Microsystems technical writer in Saint Petersburg, Russia. She supports documentation for the AWT project and updates the Java Tutorial. Prior to her assignment for Sun, she worked as a technical writer for eight years.

Using Headless Mode in the Java SE Platform--转的更多相关文章

  1. Monitor and diagnose performance in Java SE 6--转载

    Java SE 6 provides an in-depth focus on performance, offering expanded tools for managing and monito ...

  2. 关于 Java(TM) Platform SE binary 已停止工作 的解决方法

    一.问题描述 昨天晚上Myeclipse还用着好好的,今天早上打开工程,只要运行就卡住,大半天弹出个消息窗口:Java(TM) Platform SE binary 已停止工作. 如图 关闭Myecl ...

  3. .jar文件没有Java(TM) Platform SE binary打开方式解决办法

    下面是我个人在打开.jar文件时候的一些小问题: 明明已经配置好了环境变量.jar文件却没有 Java(TM) Platform SE binary 的打开方式, 网上查了资料点明是环境变量的问题,后 ...

  4. Java SE技术概览 - Jave SE Platform at a Glance

    从学习到工作,使用Java有几年时间,一直没有好好端详一下她的“内涵”.无意中看到一个关于Java SE的概览图,发现Java中提供的API还挺系统全面,把她放到博客中,相信对于想系统了解Java技术 ...

  5. Java SE 简介 & 环境变量的配置

    Java SE 简介 & 环境变量的配置 一.Java 技术的三个方向 Java 技术分为三个方向 javaSE( Java Platform Standard Edition 标准版)用来开 ...

  6. Java SE、Java EE、Java ME

    Java SE(Java Platform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程序.J ...

  7. JDK与Java SE/EE/ME的区别

    1. Java SE(Java Platform,Standard Edition). Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用 ...

  8. Java SE Java EE Java ME 的区别

    Java SE(Java Platform,Standard Edition) Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程序.J ...

  9. java的几个版本以及jre,jdk等概念——【转载】JDK、Java SE、Java EE、Java ME我该选

    我们平时使用的一些软件,有一部分需要Java环境的支持,但是SUN那么多的产品,让人眼花缭乱的版本号,前看后看都差不多的缩写,让我们选择起来的时候常常望而却步,只好跟着感觉走.所以下面我要介绍的就是那 ...

随机推荐

  1. 异步调用window.open时被浏览器阻止新窗口解决方案

    var wyWindow = window.open('_blank');$http.post($rootScope.baseUrl + '/Interface0231A.ashx', { userF ...

  2. python中实现定时器Timer

    实现定时器最简单的办法是就是循环中间嵌time.sleep(seconds), 这里我就不赘述了 # encoding: UTF-8 import threading #Timer(定时器)是Thre ...

  3. Servant:基于Web的IIS管理工具

    Servant for IIS是个管理IIS的简单.自动化的Web管理工具.安装Servant的过程很简单,只要双击批处理文件Install Servant Service.bat,然后按照屏幕上的说 ...

  4. 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

    之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂 ...

  5. 搭建 SVN 服务器

    安装.启动 SVN 服务器 在 Windows 下,可以使用以下命令将 SVN 服务注册到 windows 服务中去: sc create svnserver binPath= "drive ...

  6. Web3DGame之路,Babylonjs 和TypeScript学习笔记(二)

    先来认识一下Babylonjs,由于基于webgl来开发,所以先介绍一下基础知识. Webgl是一个html标准,他要在canvas元素上初始化. Html页面上的准备 所以我们先从html页面开始看 ...

  7. Stored Procedure 里的 WITH RECOMPILE 到底是干麻的?

    在 SQL Server 创建或修改「存储过程(stored procedure)」时,可加上 WITH RECOMPILE 选项,但多数文档或书籍都写得语焉不详,或只解释为「每次执行此存储过程时,都 ...

  8. 《Entity Framework 6 Recipes》中文翻译系列 (22) -----第五章 加载实体和导航属性之延迟加载

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第五章 加载实体和导航属性 实体框架提供了非常棒的建模环境,它允许开发人员可视化地使 ...

  9. 每天一个linux命令(18):locate 命令

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...

  10. 初学者--bootstrap(五)JavaScript插件(上)----在路上(6)

    jQuery 插件为 Bootstrap 的组件赋予了“生命”.可以简单地一次性引入所有插件,或者逐个引入到你的页面中. 一:首先要确认的是,单个还是全部引入: JavaScript 插件可以单个引入 ...