本文目錄一覽:
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一般。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/252056.html