本文目录一览:
JAVA 学习多长时间能做出像贪吃蛇这样的小程序
看你是自己学, 还是出去培训, 要是培训的话, 时间稍微长一点儿, 我说一下需要的知识吧, 时间根据各人对知识的接受能力而定:
首先需要的是Java基础
然后要弄明白面向对象的思想, 因为一个类也能做出来, 但是看着非常不好看, 而且不容易维护.
再就是学集合类, 贪食蛇用集合类来保存(比如链表)比较快, 操作起来也比较容易.
之后就是Java图形界面, AWT 和Swing 都可, 要会用JFrame的 paint方法, 不要用按钮组来模拟蛇的样子, 最好是用画笔画出来.
最后就是多线程了, 这个尤为重要, 因为贪食蛇需要两个线程来进行运行, 主要的难度就体现在多线程的控制上, 转向控制啊, 吃豆变长啊, 移动速度啊, 等等
大概就这些吧, ^_^, 祝你成功
求一java小程序。
import java.io.*;
import java.math.BigDecimal;
class abc
{
public static void main(String args[]) throws IOException
{
System.out.println("Enter a number:");
BufferedReader readin=new BufferedReader(new InputStreamReader(System.in));
String aa=readin.readLine();
//System.out.println(aa);
BigDecimal result=new BigDecimal(1);
for(int i=1;iInteger.parseInt(aa);i++)
{
//System.out.println("1%2="+1%2);
if (i%2!=0)
{
//System.out.println("i="+i);
int j=i+1;
String a_number=String.valueOf(1);
String b_number=String.valueOf(j);
String c_number=String.valueOf(result);
BigDecimal a=new BigDecimal(a_number);
BigDecimal b=new BigDecimal(b_number);
BigDecimal c=new BigDecimal(c_number);
try
{
BigDecimal bigRes=a.divide(b,20,a.ROUND_HALF_EVEN);
result=c.add(bigRes);
//System.out.println("result1="+result.toString());
}
catch(ArithmeticException e1)
{
System.out.println(e1.getMessage());
}
}
else
{
//System.out.println("i="+i);
String a_number=String.valueOf(1);
String b_number=String.valueOf(i+1);
String c_number=String.valueOf(result);
BigDecimal a=new BigDecimal(a_number);
BigDecimal b=new BigDecimal(b_number);
BigDecimal c=new BigDecimal(c_number);
try
{
BigDecimal bigRes=a.divide(b,20,a.ROUND_HALF_EVEN);
result=result.subtract(bigRes);
//System.out.println("aaaa="+bigRes.toString());
//System.out.println("result2="+result.toString());
}
catch(ArithmeticException e2)
{
System.out.println(e2.getMessage());
}
//result=result-(1/(i+1));
//System.out.println("a="+result);
//System.out.println("b="+(1/(i+1)));
//System.out.println("result2="+result);
}
}
System.out.println(result.toString());
}
}
急!!!求一个JAVA编写的小程序!!!!!
创建一个 Notepad.java 文件,将下面的代码粘贴进去,运行后就是一个记事本。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFileChooser;
import java.io.*;
import javax.swing.JOptionPane;
class Notepad {
public static void main(String[] args) {
NotepadFrame notepad = new NotepadFrame();
NotepadListener listener = new NotepadListener(notepad);
notepad.init();
notepad.addToMenuBar();
notepad.addActionListener(listener);
notepad.setVisible(true);
}
}
/**
* 记事本界面实现类
**
*/
class NotepadFrame extends JFrame {
private static final long serialVersionUID = 1L;
// 创建菜单条对象
JMenuBar jmenu = new JMenuBar();
// 创建文本域组建对象
public JTextArea textarea = new JTextArea();
// 创建滚动条对象
JScrollPane jsp = new JScrollPane(textarea);
// 创建状态栏
JLabel timeLabel = new JLabel();
// 文本区域
JTextArea jta = new JTextArea();
// 状态栏
JToolBar jtb = new JToolBar();
// 创建文件选择对话框
JFileChooser chooser = new JFileChooser();
// 菜单
JMenu file = new JMenu("文件(F)");
JMenu edit = new JMenu("编辑(E)");
JMenu view = new JMenu("查看(V)");
JMenu set = new JMenu("格式(O)");
JMenu help = new JMenu("帮助(H)");
// 文件菜单项
JMenuItem newFile = new JMenuItem("新建(N)"); // new ImageIcon("images\\OpenFile.gif")
JMenuItem openFile = new JMenuItem("打开(O)",new ImageIcon("images\\OpenFile.gif"));
JMenuItem saveFile = new JMenuItem("保存(S)");
JMenuItem ansaveFile = new JMenuItem("另存为(A)");
JMenuItem exitFile = new JMenuItem("退出(X)");
// 编辑菜单项
JMenuItem back = new JMenuItem("撤销(U)");
JMenuItem cut = new JMenuItem("剪切(T)");
JMenuItem copy = new JMenuItem("复制(C)");
JMenuItem paste = new JMenuItem("粘贴(P)");
JMenuItem delete = new JMenuItem("删除(L)");
JMenuItem find = new JMenuItem("查找(F)");
JMenuItem replace = new JMenuItem("替换(R)");
JMenuItem all = new JMenuItem("全选(A)");
JMenuItem time = new JMenuItem("时间/日期");
// 格式菜单项
JMenuItem autoChangeRow = new JMenuItem("自动换行");
JMenuItem font = new JMenuItem("字体");
// 查看菜单项
JMenuItem bar = new JMenuItem("状态栏");
// 帮助菜单项
JMenuItem viewHelp = new JMenuItem("查看帮助");
JMenuItem aboutNotepad = new JMenuItem("关于记事本");
// 弹出式菜单
JPopupMenu popmenu = new JPopupMenu();
JMenuItem itemUndo = new JMenuItem("撤销(U)", 'U');
JMenuItem itemRedo = new JMenuItem("恢复(R)", 'R');
JMenuItem itemCut = new JMenuItem("剪切(T)", 'T');
JMenuItem itemCopy = new JMenuItem("复制(P)", 'P');
JMenuItem itemPaste = new JMenuItem("粘贴(C)", 'C');
JMenuItem itemDel = new JMenuItem("删除(P)", 'P');
JMenuItem itemAll = new JMenuItem("全选(A)", 'A');
/**
* 初始化
*/
public void init() {
// 设置记事本大小
setSize(800, 600);
// 设置标题
setTitle("无标题 —— 记事本");
// 窗口居中显示
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = getSize();
setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
// 关闭窗口
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 加入控件到窗体
add(jmenu, BorderLayout.NORTH);
add(jta, BorderLayout.CENTER);
add(jtb, BorderLayout.SOUTH);
}
/**
* 把菜单选项及快捷键加入到菜单条中
*/
public void addToMenuBar() {
// 添加文件菜单项
file.setMnemonic('F');
newFile.setMnemonic(KeyEvent.VK_N);
newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
file.add(newFile);
openFile.setMnemonic(KeyEvent.VK_O);
openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
file.add(openFile);
saveFile.setMnemonic(KeyEvent.VK_S);
saveFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
file.add(saveFile);
ansaveFile.setMnemonic(KeyEvent.VK_A);
file.add(ansaveFile);
exitFile.setMnemonic(KeyEvent.VK_X);
file.add(exitFile);
jmenu.add(file);
// 添加编辑菜单项
edit.setMnemonic('E');
back.setMnemonic('U');
back.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));
edit.add(back);
cut.setMnemonic('T');
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));
edit.add(cut);
copy.setMnemonic('C');
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
edit.add(copy);
paste.setMnemonic('P');
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
edit.add(paste);
delete.setMnemonic('L');
delete.setAccelerator(KeyStroke.getKeyStroke("DELETE"));
edit.add(delete);
find.setMnemonic('F');
find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));
edit.add(find);
replace.setMnemonic('R');
replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK));
edit.add(replace);
all.setMnemonic('A');
all.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
edit.add(all);
time.setAccelerator(KeyStroke.getKeyStroke("F5"));
edit.add(time);
jmenu.add(edit);
// 格式菜单项
font.setMnemonic('O');
set.add(autoChangeRow);
set.add(font);
jmenu.add(set);
// 查看菜单项
view.setMnemonic('V');
view.add(bar);
jmenu.add(view);
// 帮助菜单项
help.setMnemonic('H');
help.add(viewHelp);
help.add(aboutNotepad);
jmenu.add(help);
// 添加弹出菜单选项
itemUndo.setIcon(new ImageIcon("images\\Undo.gif"));
popmenu.add(itemUndo);
itemRedo.setIcon(new ImageIcon("images\\Redo.gif"));
popmenu.add(itemRedo);
popmenu.addSeparator();
itemCut.setIcon(new ImageIcon("images\\Cut.gif"));
popmenu.add(itemCut);
itemCopy.setIcon(new ImageIcon("images\\Copy.gif"));
popmenu.add(itemCopy);
itemPaste.setIcon(new ImageIcon("images\\Paste.gif"));
popmenu.add(itemPaste);
itemDel.setIcon(new ImageIcon("images\\Del.gif"));
popmenu.add(itemDel);
popmenu.addSeparator();
popmenu.add(itemAll);
}
/**
* 给事件源添加监听器
* @param listener 事件监听器
*/
public void addActionListener(ActionListener listener) {
// 对文件菜单项进行监听
newFile.addActionListener(listener);
openFile.addActionListener(listener);
saveFile.addActionListener(listener);
ansaveFile.addActionListener(listener);
exitFile.addActionListener(listener);
// 对编辑菜单项进行监听
back.addActionListener(listener);
cut.addActionListener(listener);
copy.addActionListener(listener);
paste.addActionListener(listener);
delete.addActionListener(listener);
find.addActionListener(listener);
replace.addActionListener(listener);
all.addActionListener(listener);
time.addActionListener(listener);
// 对格式菜单项进行监听
autoChangeRow.addActionListener(listener);
font.addActionListener(listener);
// 对查看菜单项进行监听
bar.addActionListener(listener);
// 对帮助菜单项进行监听
viewHelp.addActionListener(listener);
aboutNotepad.addActionListener(listener);
// 对弹出式菜单进行监听
itemUndo.addActionListener(listener);
itemRedo.addActionListener(listener);
itemCut.addActionListener(listener);
itemCopy.addActionListener(listener);
itemPaste.addActionListener(listener);
itemDel.addActionListener(listener);
itemAll.addActionListener(listener);
}
}
class NotepadListener implements ActionListener {
private NotepadFrame notepad;
public NotepadListener(NotepadFrame notepad) {
this.notepad = notepad;
}
/**
* 文件菜单具体实现
* @param e
*/
public void fileActionEvent(ActionEvent e) {
// 新建
if (e.getSource() == notepad.newFile) {
}
// 打开
if (e.getSource() == notepad.openFile) {
// 设置类型为打开方式
notepad.chooser.setDialogType(JFileChooser.OPEN_DIALOG);
// 显示打开文件对话框
notepad.chooser.showOpenDialog(notepad);
// 获取文件所在路径
File f = notepad.chooser.getSelectedFile();
if (f != null) {
// 读取文件内容
String content = UtilityMethod.readFile(f);
// 设置文件内容显示
notepad.jta.setText(content);
notepad.setTitle(f.getName() + " —— 记事本");
}
}
// 另存为
if (e.getSource() == notepad.saveFile) {
// 设置类型为保持方式
notepad.chooser.setDialogType(JFileChooser.SAVE_DIALOG);
// 显示保存文件对话框
notepad.chooser.showSaveDialog(notepad);
// 获得文件选择路径
File file = notepad.chooser.getSelectedFile();
if (file != null) {
// 写入文本与的字符串到文件中
UtilityMethod.writeFile(file, notepad.jta.getText());
notepad.setTitle(file.getName() + " —— 记事本");
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
fileActionEvent(e);
}
}
class UtilityMethod {
public static String getCurrentTime(String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = new Date();
return sdf.format(date);
}
public static String readFile(File f) {
FileInputStream fis = null;
byte[] b = null;
try {
fis = new FileInputStream(f);
b = new byte[fis.available()];
fis.read(b);
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "对不起,找不到指定的文件!", "打开文件出错", JOptionPane.WARNING_MESSAGE);
} catch (IOException e1) {
JOptionPane.showMessageDialog(null, "对不起,出现IO异常,请稍候再试!", "读取文件出错", JOptionPane.WARNING_MESSAGE);
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "对不起,出现IO异常,请稍候再试!", "关闭输入流出错", JOptionPane.WARNING_MESSAGE);
}
}
}
return new String(b);
}
public static void writeFile(File file, String text) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
fos.write(text.getBytes());
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "对不起,找不到指定的文件!", "保存文件出错", JOptionPane.WARNING_MESSAGE);
} catch (IOException e1) {
JOptionPane.showMessageDialog(null, "对不起,出现IO异常,请稍候再试!", "写入文件出错", JOptionPane.WARNING_MESSAGE);
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "对不起,出现IO异常,请稍候再试!", "关闭输出流出错", JOptionPane.WARNING_MESSAGE);
}
}
}
}
}
求一个简单又有趣的JAVA小游戏代码
具体如下:
连连看的小源码
package Lianliankan;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class lianliankan implements ActionListener
{
JFrame mainFrame; //主面板
Container thisContainer;
JPanel centerPanel,southPanel,northPanel; //子面板
JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组
JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮
JLabel fractionLable=new JLabel("0"); //分数标签
JButton firstButton,secondButton; //
分别记录两次62616964757a686964616fe59b9ee7ad9431333335326239被选中的按钮
int grid[][] = new int[8][7];//储存游戏按钮位置
static boolean pressInformation=false; //判断是否有按钮被选中
int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标
int i,j,k,n;//消除方法控制
代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。
对于字符和Unicode数据的位模式的定义,此模式代表特定字母、数字或符号(例如 0x20 代表一个空格,而 0x74 代表字符“t”)。一些数据类型每个字符使用一个字节;每个字节可以具有 256 个不同的位模式中的一个模式。
在计算机中,字符由不同的位模式(ON 或 OFF)表示。每个字节有 8 位,这 8 位可以有 256 种不同的 ON 和 OFF 组合模式。对于使用 1 个字节存储每个字符的程序,通过给每个位模式指派字符可表示最多 256 个不同的字符。2 个字节有 16 位,这 16 位可以有 65,536 种唯一的 ON 和 OFF 组合模式。使用 2 个字节表示每个字符的程序可表示最多 65,536 个字符。
单字节代码页是字符定义,这些字符映射到每个字节可能有的 256 种位模式中的每一种。代码页定义大小写字符、数字、符号以及 !、@、#、% 等特殊字符的位模式。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页。
虽然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代码页中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代码页中却不同。如果在运行不同代码页的计算机间交换数据,必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失。
如果某个数据库为来自许多不同国家的客户端提供服务,则很难为该数据库选择这样一种代码页,使其包括所有客户端计算机所需的全部扩展字符。而且,在代码页间不停地转换需要花费大量的处理时间。
什么是java小程序
简单的说java是一种面向对象的编程语言,可以编写各种应用程序以及游戏。
java分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。
手机用到的是用j2me所编出来的小程序,一般网站上都有编好的java游戏,电子书以及各种小程序,每个java小程序都有.jar和.jad两个文件,因为没用过tcl得手机,所以不太清楚是不是两个都需要传到手机里。
正常的是下载到电脑后先把.jar的文件传到手机里就可以直接用了,个别手机还需把.jad的文件也传进去。
JAVA介绍
一、前言
『Java』从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和多 媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计 算机(PC)的关系。那Java究竟有那些特色呢?
Java是一种软件技术
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
是一种为 Internet发展的计算机语言
是一种使网页(Web Page)产生生动活泼画面的语言
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
是一种语言,用以产生「小应用程序(Applet(s))」
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
是一种将安全性(Security)列为第一优先考虑的语言
是一种使用者不需花费很多时间学习的语言
是一种突破用户端机器环境和CPU结构的语言
是一种「写一次,即可在任何机器上执行(Write OnceRun Anywhere)」的语言是有史以来,第一套允 使用者将应用程序(Applications)通过Internet从远端的服务器(Remote Server)传输到本地端的机器 上(LocalMachine)并执行
是一种应用程序提供者不需要知道使用者的计算机硬件(如:Sun, Intel, 或MAC等)与软件(如:SW- UNIX, MAC O/S, Windows, 或NT等)环境的语言(Kestenbaum, 1995)。
下面将依序地介绍Java,首先是Java的发展历史与Java语言介绍,其次依序是Java Applet和HotJava的简单介绍。
二、Java FAQ
下面以问答的方式来说明Java的发展历史与其背景(下列内容整理自 Java FAQ list and Tutorial和The Java Language: A White Paper,读者若欲深 入了解,请自行参阅原文):
Java何时开始发展?(When)
最早大概可追溯至1991年四月份,Sun的绿色计划(Green Project)开始着手于发展消费性电子产品(Consumer Electronics),所使用的语言是C、C++、及Oak (为Java语 言的前身),后因语言本身和市场的问题, 使得消费性电子产品的发展无法达到当初 预期的目标,再加上网络的兴起, 绿色计划也因此而改变发展的方向,这已是1994 年了。
为何称之为Java?(Why) "Java"是美国SUN计算机公司Java发展小组历经无数次的激烈讨论之后才被选择出。 生动(Liveliness)、动画(Animation)、速度(Speed)、交互性(Interactivity)为当 初选择名字时所欲表达出的特色。"Java"是在无数的建议中脱颖而出的,而"Java" 不是由几个单字的首字所组成, 而是从许多程序设计师钟爱的热腾腾、香浓咖啡中 产生灵感的。
谁开发了Java?(Who) Java是美国SUN计算机公司Java发展小组开发的,早期的成员(绿色工程)是Patrick Naughton, James Gosling, Mike Sheridan,而现在大家较为熟悉的成员是James Gosling。
在那里开发了Java?(Where)
也就是问Java的出生地?答案是美国。
如何可以找到所需的Java信息?(How to)
在网路上,您可以连到Sun公司的Java WWW网站,URL是,或是 。在那里几乎可以找到您所需要的所有Java信息,但是语 言多少是一个障碍, 至少对某些人而言;没关系,目前国内已有很多个网站提供中文 Java信息。在清华和中科院的FTP站点上有不少有关资料。想象以后应会有更多的站点提供相关信息。
如何才能看到Java的效果?(How Do I)
首先您需要有含有Java解释器的浏览器(Browser),例如:Netscpae公司的Netscape Navigator 2.0以上或是Sun公司的HotJava浏览器,对个人计算机使用者而言,操作 系统需是Windows 95或是Windows NT。
Java是因为撰写C++语言程序时的困难而研制开的,起先,只是一个消费性电子产品 大计划中的一部份,C++语言是当初被考虑采用的,但从一开始的编译问题一直到最 后的一连串问题迫使得放弃C++语言,而有Java语言的产生。Sun是要Java成为一个简 单(Simple)、面向对象的(Object Oriented)、 分布式的(Distributed)、解释的(Interpreted)、健壮的(Robust)、安全的(Secure)、 结构中立的(Architecture Neutral)、可移植的(Portable)、高效能的(High Performance)、多线程的(Multithreaded)、动态的(Dynamic)的程序语言(摘译自 TheJava Language: A White Paper, 1995)。
在Sun的Java语言白皮书中明白地说明上述Java语言的技巧。若以木工为比喻,一个面 向对象的木工,他(她)最主要的重点是即将要做的木椅子,其次才是所需要的工具; 反之;一个以非面向对象的木工,他(她)所关心的只是工具。最近的即插即用(Plug and Play)亦是面向对象设计的重点。 分布式的(Distributed):Java有一个很周全的程薪录JAVA介绍 。
一、
『Java』从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和 多媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计 算机TTP和FTP等TCP/IP通讯协定相配合。Java应用程序(Applications) 能在网路上开启及连结使用物件,就如同透过URLs连结使用一个本地文件系统(Local File System)。 健壮的(Robust):由Java所编写出的程序能在多种情况下执行而具有其稳定性。Java与 C/C++最大不同点是Java有一个指针模型(Pointer Model)来排除内存被覆盖(Overwriting Memory)和毁损数据(Corrupting Data)的可能性。
安全的(Secure):Java是被设计用于网络及分布式的环境中,安全性自必是一个很 重要的考虑。Java拥有数个阶层的互锁(Interlocking)保护措施,能有效地防止病 毒的侵入和破坏行为的发生。
结构中立的(Architecture Neutral):一般而言,网络是由很多不同机型的机器所 组合而成的,CPU和作业系统体系结构均有所不同;因此,如何使一个应用程序可以 在每一种机器上执行,是一个难题。所幸,Java的编译器产生一种结构中立的目标 文件格式(Object File Format);这使得编译码得以在很多种处理器中执行。
可移植的(Portable):原始资料型式的大小是被指定的,例如"float"一直是表示一 个32位元IEEE 754浮点运算数字,因绝大多数的CPU都具有此共同特征。程序库属于 系统的一部份,它定义了一些可移植的程序接口,Java本身具备有很好的可移植性。
解释的(Interpreted):Java解释器能直接地在任何机器上执行Java位元码(Bytecodes), 因此在进行程序连结时,时间的节省,这对于缩短程序的开发过程,有极大的帮助。
高效能的(High Performance):Java位元码迅速地能被转换成机器码(Machine Code), 从位元码转换到机器码的效能几乎与C与C++没有分别。
多线程的(Multi threaded):Java语言具有多线程的功能,这对于交互回应能力及 即时执行行为是有帮助的。
动态的(Dynamic):Java比C或C++语言更具有动态性,更能适应时刻在变的环境, Java不会因程序库的更新,而必须重新编译程序。
此外,Hank Shiffman (Making Sense of Java)亦针一般对Java的错误看法及观 念提出他的说明,特在此摘译如下:
"Java是一种编写Web Pages的一种语言,就如同HTML和VRML一样" 事实上,Java并不像是HTML此一类的描述语言(Description Language),而是一种 编程语言(Programming Language)。描述语言标明内容和位置,而编程语言描述一 种产生结果的过程。
2. "Java语言容易学习和使用,不像C、C++和其它程序语言"
Java是一种编程语言。Java容易学吗?Java或许是比C或C++容易学,但仍是一种编程语言,而不是一种描述语言。
3. "Java码是可移植的,但C及C++不是"
Java原代码(Source Code)是比C语言来得可移植一点,差别在于Java的目标码。 Java码在一种机器上进行编译,而能在所有的机器上执行, 只要那部机器上有 Java解释器。
4. "Java能被拓展而在机器上执行任何事情"
理论上,Java Applet (Java小应用程序)能做任何事情,如模拟3D VRML模型、播放电影、产生音频....等。但事实上,一个小应用程序(Applet)仅能在那一页上被执行,而无法在那一页之外执行。同时,Java亦受限于程序库的功能。
5. "Java是适合于建立大型的应用程序"
如果Java适合于大型程序,则Java就不适合应用于Web浏览器了。第一个商业 性的Java Applets (Applix's Java-Based Spreadsheet) 并不是全然使用Java, 它只使用Java作为用户接口,而所有的处理工作, 是用CGI码。
6. "Java是解释执行的,Basic是解释执行的,因此Java=Basic"
虽然Java的确是使用解释器,但事实上,Java则与C或C++等完全编译语言较为相近,但与Basic或APL等完全解译语言较不相近。
7. "Java删除了CGI命令稿(Scripts)和程序的需求"
Java Applets将会取代部份CGI的用途。在有些情况,Java Applets能够取代一些服务器端代码(Server-Side Code),但大多数的情况,基于安全性理由或是效 能的考虑,Java仍无法全然取代CGI Scripts。
8. "Netscape's JavaScript是与Java有相关"
除了名称之外,Java和JavaScript是有一点点相关。JavaScript是一种命令稿语 言,是可以在HTML页中使用。Java码并未出现在HTML中,而在HTML中通过一个链 结来链结编译码组。Java和JavaScript之间的关系就如同C语言和C Shell一般。