本文目錄一覽:
- 1、在Java語言中,編寫和運行Java應用程序和Java小程序的步驟是什麼
- 2、用java做一個可視化小程序,可以錄音並予以保存。
- 3、簡述Java Applet 程序的特點是什麼?
- 4、用JAVA編寫一個小應用程序
- 5、什麼是java小程序
在Java語言中,編寫和運行Java應用程序和Java小程序的步驟是什麼
將編寫的java源文件保存為.java後綴的文件(選擇所有文件)
在cmd命令行窗口中將當前目錄切換到java文件保存的目錄下,即cd命令
使用javac
+文件名.java編譯java文件
使用java+類文件名(即編譯後產生的.class文件)運行程序
用java做一個可視化小程序,可以錄音並予以保存。
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.TargetDataLine;
public class RecordPlay {
boolean stopCapture = false; // 控制錄音標誌
AudioFormat audioFormat; // 錄音格式
// 讀取數據:從TargetDataLine寫入ByteArrayOutputStream錄音
ByteArrayOutputStream byteArrayOutputStream;
int totaldatasize = 0;
TargetDataLine targetDataLine;
// 播放數據:從AudioInputStream寫入SourceDataLine播放
AudioInputStream audioInputStream;
SourceDataLine sourceDataLine;
private Button captureBtn;
private Button stopBtn;
private Button playBtn;
private Button saveBtn;
private Label myLabel;
private Shell shell;
private Display display;
public RecordPlay() {
super();
display = new Display();
shell = new Shell(display);
shell.setSize(350, 150);
shell.setText(“錄音機程序”);
//
myLabel = new Label(shell, SWT.NONE);
myLabel.setBounds(38, 21, 100, 18);
myLabel.setText(“錄音機”);
// 創建按鈕
captureBtn = new Button(shell, SWT.NONE);
captureBtn.setBounds(30, 61, 60, 18);
captureBtn.setText(“錄音”);
captureBtn.setEnabled(true);
stopBtn = new Button(shell, SWT.NONE);
stopBtn.setBounds(100, 61, 60, 18);
stopBtn.setText(“停止”);
stopBtn.setEnabled(false);
playBtn = new Button(shell, SWT.NONE);
playBtn.setBounds(170, 61, 60, 18);
playBtn.setText(“播放”);
playBtn.setEnabled(false);
saveBtn = new Button(shell, SWT.NONE);
saveBtn.setBounds(240, 61, 60, 18);
saveBtn.setText(“保存”);
saveBtn.setEnabled(false);
// 註冊錄音事件
captureBtn.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent event) {
captureBtn.setEnabled(false);
stopBtn.setEnabled(true);
playBtn.setEnabled(false);
saveBtn.setEnabled(false);
// 開始錄音
capture();
}
public void widgetDefaultSelected(SelectionEvent event) {
// text.setText(“No worries!”);
}
});
// 註冊停止事件
stopBtn.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent event) {
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
playBtn.setEnabled(true);
saveBtn.setEnabled(true);
// 停止錄音
stop();
}
public void widgetDefaultSelected(SelectionEvent event) {
// text.setText(“No worries!”);
}
});
// 註冊播放事件
playBtn.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent event) {
// 播放錄音
play();
}
public void widgetDefaultSelected(SelectionEvent event) {
// text.setText(“No worries!”);
}
});
// 註冊保存事件
saveBtn.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent event) {
// 保存錄音
save();
}
public void widgetDefaultSelected(SelectionEvent event) {
// text.setText(“No worries!”);
}
});
}
public void start() {
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
public static void main(String[] args) {
RecordPlay label = new RecordPlay();
label.start();
}
// (1)錄音事件,保存到ByteArrayOutputStream中
private void capture() {
try {
// 打開錄音
audioFormat = getAudioFormat();
DataLine.Info dataLineInfo = new DataLine.Info(
TargetDataLine.class, audioFormat);
targetDataLine = (TargetDataLine) AudioSystem.getLine(dataLineInfo);
targetDataLine.open(audioFormat);
targetDataLine.start();
// 創建獨立線程進行錄音
Thread captureThread = new Thread(new CaptureThread());
captureThread.start();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
// (2)播放ByteArrayOutputStream中的數據
private void play() {
try {
// 取得錄音數據
byte audioData[] = byteArrayOutputStream.toByteArray();
// 轉換成輸入流
InputStream byteArrayInputStream = new ByteArrayInputStream(
audioData);
AudioFormat audioFormat = getAudioFormat();
audioInputStream = new AudioInputStream(byteArrayInputStream,
audioFormat, audioData.length / audioFormat.getFrameSize());
DataLine.Info dataLineInfo = new DataLine.Info(
SourceDataLine.class, audioFormat);
sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo);
sourceDataLine.open(audioFormat);
sourceDataLine.start();
// 創建獨立線程進行播放
Thread playThread = new Thread(new PlayThread());
playThread.start();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
// (3)停止錄音
public void stop() {
stopCapture = true;
}
// (4)保存文件
public void save() {
// 取得錄音輸入流
AudioFormat audioFormat = getAudioFormat();
byte audioData[] = byteArrayOutputStream.toByteArray();
InputStream byteArrayInputStream = new ByteArrayInputStream(audioData);
audioInputStream = new AudioInputStream(byteArrayInputStream,
audioFormat, audioData.length / audioFormat.getFrameSize());
// 寫入文件
try {
File file = new File(“d:/myjava/test.wav”);
AudioSystem
.write(audioInputStream, AudioFileFormat.Type.WAVE, file);
} catch (Exception e) {
e.printStackTrace();
}
}
// 取得AudioFormat
private AudioFormat getAudioFormat() {
float sampleRate = 16000.0F;
// 8000,11025,16000,22050,44100
int sampleSizeInBits = 16;
// 8,16
int channels = 1;
// 1,2
boolean signed = true;
// true,false
boolean bigEndian = false;
// true,false
return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed,
bigEndian);
}
class PlayThread extends Thread {
byte tempBuffer[] = new byte[10000];
public void run() {
try {
int cnt;
// 讀取數據到緩存數據
while ((cnt = audioInputStream.read(tempBuffer, 0,
tempBuffer.length)) != -1) {
if (cnt 0) {
// 寫入緩存數據
sourceDataLine.write(tempBuffer, 0, cnt);
}
}
// Block等待臨時數據被輸出為空
sourceDataLine.drain();
sourceDataLine.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
}
class CaptureThread extends Thread {
// 臨時數組
byte tempBuffer[] = new byte[10000];
public void run() {
byteArrayOutputStream = new ByteArrayOutputStream();
totaldatasize = 0;
stopCapture = false;
try {// 循環執行,直到按下停止錄音按鈕
while (!stopCapture) {
// 讀取10000個數據
int cnt = targetDataLine.read(tempBuffer, 0,
tempBuffer.length);
if (cnt 0) {
// 保存該數據
byteArrayOutputStream.write(tempBuffer, 0, cnt);
totaldatasize += cnt;
}
}
byteArrayOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}
}
}
}
簡述Java Applet 程序的特點是什麼?
Java Applet 是用Java 語言編寫的一些小應用程序,這些程序是直接嵌入到頁面中,由支持Java的瀏覽器(IE 或 Nescape)解釋執行能夠產生特殊效果的程序。它可以大大提高Web頁面的交互能力和動態執行能力。包含Applet的網頁被稱為Java-powered頁,可以稱其為Java支持的網頁。
當用戶訪問這樣的網頁時,Applet被下載到用戶的計算機上執行,但前提是用戶使用的是支持Java的網路瀏覽器。由於Applet是在用戶的計算機上執行的,所以它的執行速度不受網路帶寬或者Modem存取速度的限制,用戶可以更好地欣賞網頁上Applet產生的多媒體效果。
Applet 小應用程序的實現主要依靠java.applet 包中的Applet類。與一般的應用程序不同,Applet應用程序必須嵌入在HTML頁面中,才能得到解釋執行;同時Applet可以從Web頁面中獲得參數,並和Web頁面進行交互。
含有Applet的網頁的HTML文件代碼中必須帶有applet和/applet這樣一對標記,當支持Java的網路瀏覽器遇到這對標記時,就將下載相應的小程序代碼並在本地計算機上執行該Applet小程序。
Applet是一種Java的小程序,它通過使用該Applet的HTML文件,由支持Java的網頁瀏覽器下載運行。也可以通過java開發工具的appletviewer來運行。Applet 程序離不開使用它的HTML文件。這個HTML文件中關於Applet的信息至少應包含以下三點:
1)位元組碼文件名(編譯後的Java文件,以.class為後綴)
2)位元組碼文件的地址
3)在網頁上顯示Applet的方式。
一個HTML文件增加Applet有關的內容只是使網頁更加富有生氣,如添加聲音、動畫等這些吸引人的特徵,它並不會改變HTML文件中與Applet無關的元素。
(一) Applet程序開發步驟
Applet程序開發主要步驟如下:
1)選用EDIT或Windows Notepad等工具作為編輯器建立Java Applet源程序。
2)把Applet的源程序轉換為位元組碼文件。
3)編製使用class 的HTML文件。在HTML文件內放入必要的APPLET語句。
下面舉一個最簡單的HelloWorld 例子來說明Applet程序的開發過程:
(1) 編輯Applet 的java源文件
創建文件夾C:\ghq,在該文件夾下建立 HelloWorld.java
文件的源代碼如下:
import java.awt.*;
import java.applet.*;
public class HelloWorld extends Applet //繼承Appelet類,這是Appelet Java程序的特點
{
public void paint(Graphics g )
{
g.drawString(“Hello World!”,5,35);
}
}
保存上述程序在C:\ghq\HelloWorld.java文件里。
(2)編譯Applet
編譯HelloWorld.java源文件可使用如下JDK命令:
C:\ghq\javac HelloWorld.javaEnter
注意:如果編寫的源程序違反了Java編程語言的語法規則,Java編譯器將在屏幕上顯示語法錯誤提示信息。源文件中必須不含任何語法錯誤,Java編譯器才能成功地把源程序轉換為appletviewer和瀏覽器能夠執行的位元組碼程序。
成功地編譯Java applet之後生成響應的位元組碼文件HelloWorld.class的文件。用資源管理器或DIR命令列出目錄列表,將會發現目錄C:\ghq中多了一個名為HelloWorld.class的文件。
(3)創建HTML文件
在運行創建的HelloWorld.class 之前,還需創建一個HTML文件,appletviewer或瀏覽器將通過該文件訪問創建的Applet。為運行HelloWorld.class, 需要創建包含如下HTML語句的名為HelloWorld.html的文件。
HTML
TITLEHelloWorld! Applet/TITLE
APPLET
CODE=”JavaWorld.class”
WIDTH=200
HEIGHT=100
/APPLET
/HTML
本例中,APPLET語句指明該Applet位元組碼類文件名和以像素為單位的窗口的尺寸。雖然這裡HTML文件使用的文件名為HelloWorld.HTML,它對應於HelloWorld.java的名字,但這種對應關係不是必須的,可以用其他的任何名字(比如說Ghq.HTML)命名該HTML文件。但是使文件名保持一種對應關係可給文件的管理帶來方便。
(4)執行 HelloWorld.html
如果用appletviewer運行HelloWorld.html,需輸入如下的命令行:
C:\ghq\appletviewer JavaWorld.htmlENTER
可以看出,該命令啟動了appletviewer並指明了HTML文件,該HTML文件中包含對應於HelloWorld 的APPLET語句。
如果用瀏覽器運行HelloWorld Applet,需在瀏覽器的地址欄中輸入HTML文件URL地址。
至此,一個Applet程序的開發運行整個過程結束了(包括java源文件、編譯的class文件、html文件以及用appletviewer或用瀏覽器運行)。
(二) Applet類
Applet類是所有Applet應用的基類,所有的Java小應用程序都必須繼承該類。如下所示。
import java. applet.*;
public class OurApplet extends Applet
{
……
……
}
Applet類的構造函數只有一種,即:public Applet()
Applet實現了很多基本的方法,下面列出了Applet類中常用方法和用途。
public final void setStub(AppletStub stub)
//設置Applet的stub.stub是Java和C之間轉換參數並返回值的代碼位,它是由系統自動設定的。
public boolean isActive();// 判斷一個Applet是否處於活動狀態。
public URL getDocumentBase();// 檢索表示該Applet運行的文件目錄的對象。
public URL getCodeBase();// 獲取該Applet 代碼的URL地址。
public String getParameter(String name);// 獲取該Applet 由name指定參數的值。
public AppletContext getAppletContext();// 返回瀏覽器或小應用程序觀察器。
public void resize(int width,int height);// 調整Applet運行的窗口尺寸。
public void resize(Dimension d);// 調整Applet運行的窗口尺寸。
public void showStatus(String msg);// 在瀏覽器的狀態條中顯示指定的信息。
public Image getImage(URL url); // 按url指定的地址裝入圖象。
public Image getImage(URL url,String name);// 按url指定的地址和文件名載入圖像。
public AudioClip getAudioClip(URL url);// 按url指定的地址獲取聲音文件。
public AudioClip getAudioClip(URL url, String name);// 按url指定的地址和文件名獲取聲音。
public String getAppletInfo();// 返回Applet應用有關的作者、版本和版權方面的信息;
public String[][] getParameterInfo();
// 返回描述Applet參數的字元串數組,該數組通常包含三個字元串: 參數名、該參數所需值的類型和該參數的說明。
public void play(URL url);// 載入並播放一個url指定的音頻剪輯。
public void destroy();//撤消Applet及其所佔用的資源。若該Applet是活動的,則先終止該Applet的運行。
(1) Applet運行狀態控制基本方法
Applet類中的四種基本方法用來控制其運行狀態:init()、start()、stop()、destroy()
init()方法
這個方法主要是為Applet的正常運行做一些初始化工作。當一個Applet被系統調用時,系統首先調用的就是該方法。通常可以在該方法中完成從網頁向Applet傳遞參數,添加用戶界面的基本組件等操作。
start()方法
系統在調用完init()方法之後,將自動調用start()方法。而且,每當用戶離開包含該Applet的主頁後又再返回時,系統又會再執行一遍start()方法。這就意味著start()方法可以被多次執行,而不像init()方法。因此,可把只希望執行一遍的代碼放在init()方法中。可以在start()方法中開始一個線程,如繼續一個動畫、聲音等。
stop()方法
這個方法在用戶離開Applet所在頁面時執行,因此,它也是可以被多次執行的。它使你可以在用戶並不注意Applet的時候,停止一些耗用系統資源的工作以免影響系統的運行速度,且並不需要人為地去調用該方法。如果Applet中不包含動畫、聲音等程序,通常也不必實現該方法。
destroy()方法
與對象的finalize()方法不同,Java在瀏覽器關閉的時候才調用該方法。Applet是嵌在HTML文件中的,所以destroty()方法不關心何時Applet被關閉,它在瀏覽器關閉的時候自動執行。在destroy()方法中一般可以要求收回佔用的非內存獨立資源。(如果在Applet仍在運行時瀏覽器被關閉,系統將先執行stop()方法,再執行destroy()方法。
(2) Applet應用的有關參數說明
利用Applet來接收從HTML中傳遞過來的參數,下面對這些參數作一簡單說明:
* CODE標誌
CODE標誌指定Applet的類名;WIDTH和HEIGHT標誌指定Applet窗口的像素尺寸。在APPLET語句里還可使用其他一些標誌。
* CODEBASE 標誌
CODEBASE標誌指定Applet的URL地址。Applet的通用資源定位地址URL,它可以是絕對地址 ,如。也可以是相對於當前HTML所在目錄的相對地址,如/AppletPath/Name。如果HTML文件不指定CODEBASE 標誌,瀏覽器將使用和HTML文件相同的URL。
* ALT 標誌
雖然Java在WWW上很受歡迎,但並非所有瀏覽器都對其提供支持。如果某瀏覽器無法運行Java Applet,那麼它在遇到APPLET語句時將顯示ALT標誌指定的文本信息。
* ALIGN 標誌
ALIGN標誌可用來控制把Applet窗口顯示在HTML文檔窗口的什麼位置。與HTMLLMG語句一樣,ALIGN標誌指定的值可以是TOP、MIDDLE或BOTTOM。
* VSPACE與HSPACE 標誌
VSPACE和HSPACE標誌指定瀏覽器顯示在Applet窗口周圍的水平和豎直空白條的尺寸,單位為像素。如下例使用該標誌在Applet窗口之上和之下各留出50像素的空白,在其左和其右各留出25像素的空白:
* NAME 標誌
NAME標誌把指定的名字賦予Applet的當前實例。當瀏覽器同時運行兩個或多個Applet時,各Applet可通過名字相互引用或交換信息。如果忽略NAME標誌,Applet的名字將對應於其類名。
* PARAM 標誌
通用性是程序設計所追求的目標之一。使用戶或者程序員能很方便地使用同一個Applet完成不同的任務是通用性的具體表現。從HTML文件獲取信息是提高Applet通用性的一條有效途徑。
假設編製了一個把某公司的名字在屏幕上捲動的Applet。為了使該Applet更加通用,則可以使該Applet從HTML文件獲取需要捲動的文本信息。這樣,若想顯示另一個公司的名字,用不著修改Java Applet本身,只需修改HTML文件即可。
PARAM 標誌可用來在HTML文件里指定參數,格式如下所示:
PARAM Name=”name” Value=”Liter”
Java Applet可調用getParameter方法獲取HTML文件里設置的參數值。
用JAVA編寫一個小應用程序
單人版五子棋,自己寫的。
——————————————
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class mypanel extends Panel implements MouseListener
{
int chess[][] = new int[11][11];
boolean Is_Black_True;
mypanel()
{
Is_Black_True = true;
for(int i = 0;i 11;i++)
{
for(int j = 0;j 11;j++)
{
chess[i][j] = 0;
}
}
addMouseListener(this);
setBackground(Color.BLUE);
setBounds(0, 0, 360, 360);
setVisible(true);
}
public void mousePressed(MouseEvent e)
{
int x = e.getX();
int y = e.getY();
if(x 25 || x 330 + 25 ||y 25 || y 330+25)
{
return;
}
if(chess[x/30-1][y/30-1] != 0)
{
return;
}
if(Is_Black_True == true)
{
chess[x/30-1][y/30-1] = 1;
Is_Black_True = false;
repaint();
Justisewiner();
return;
}
if(Is_Black_True == false)
{
chess[x/30-1][y/30-1] = 2;
Is_Black_True = true;
repaint();
Justisewiner();
return;
}
}
void Drawline(Graphics g)
{
for(int i = 30;i = 330;i += 30)
{
for(int j = 30;j = 330; j+= 30)
{
g.setColor(Color.WHITE);
g.drawLine(i, j, i, 330);
}
}
for(int j = 30;j = 330;j += 30)
{
g.setColor(Color.WHITE);
g.drawLine(30, j, 330, j);
}
}
void Drawchess(Graphics g)
{
for(int i = 0;i 11;i++)
{
for(int j = 0;j 11;j++)
{
if(chess[i][j] == 1)
{
g.setColor(Color.BLACK);
g.fillOval((i + 1) * 30 – 8, (j + 1) * 30 – 8, 16, 16);
}
if(chess[i][j] == 2)
{
g.setColor(Color.WHITE);
g.fillOval((i + 1) * 30 – 8, (j + 1) * 30 – 8, 16, 16);
}
}
}
}
void Justisewiner()
{
int black_count = 0;
int white_count = 0;
int i = 0;
for(i = 0;i 11;i++)//橫向判斷
{
for(int j = 0;j 11;j++)
{
if(chess[i][j] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, “黑棋勝利”);
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[i][j] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, “白棋勝利”);
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}
for(i = 0;i 11;i++)//豎向判斷
{
for(int j = 0;j 11;j++)
{
if(chess[j][i] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, “黑棋勝利”);
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[j][i] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, “白棋勝利”);
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}
for(i = 0;i 7;i++)//左向右斜判斷
{
for(int j = 0;j 7;j++)
{
for(int k = 0;k 5;k++)
{
if(chess[i + k][j + k] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, “黑棋勝利”);
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[i + k][j + k] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, “白棋勝利”);
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}
}
for(i = 4;i 11;i++)//右向左斜判斷
{
for(int j = 6;j = 0;j–)
{
for(int k = 0;k 5;k++)
{
if(chess[i – k][j + k] == 1)
{
black_count++;
if(black_count == 5)
{
JOptionPane.showMessageDialog(this, “黑棋勝利”);
Clear_Chess();
return;
}
}
else
{
black_count = 0;
}
if(chess[i – k][j + k] == 2)
{
white_count++;
if(white_count == 5)
{
JOptionPane.showMessageDialog(this, “白棋勝利”);
Clear_Chess();
return;
}
}
else
{
white_count = 0;
}
}
}
}
}
void Clear_Chess()
{
for(int i=0;i11;i++)
{
for(int j=0;j11;j++)
{
chess[i][j]=0;
}
}
repaint();
}
public void paint(Graphics g)
{
Drawline(g);
Drawchess(g);
}
public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
}
class myframe extends Frame implements WindowListener
{
mypanel panel;
myframe()
{
setLayout(null);
panel = new mypanel();
add(panel);
panel.setBounds(0,23, 360, 360);
setTitle(“單人版五子棋”);
setBounds(200, 200, 360, 383);
setVisible(true);
addWindowListener(this);
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void windowDeactivated(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
}
public class mywindow
{
public static void main(String argc [])
{
myframe f = new myframe();
}
}
什麼是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一般。
原創文章,作者:MVIK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133014.html