java編譯器網頁版
JCreater 、JBuilder、eclipse、myeclipse、netbean這幾個是主流,eclipse和myeclipse(eclipse的擴展功能更多)是主流中的主流
『貳』 java編譯文本編輯器
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EditorJFrame extends JFrame implements ActionListener, ItemListener, MouseListener
{
private JTextField text_size; //字型大小文本行
private JCheckBox checkbox_bold, checkbox_italic; //粗體、斜體復選框
private JButton button_cut, button_, button_paste; //剪切、復制、粘貼按鈕
private JTextArea textarea; //文本區
private JPopupMenu popupmenu; //快捷菜單
private JDialog dialog; //出錯提示對話框
private JLabel label_dialog; //對話框中的標簽
public EditorJFrame()
{
super("文本編輯器"); //默認BorderLayout布局
this.setSize(500,300);
this.setLocation(300,240);
this.setDefaultCloseOperation(EXIT_ON_CLOSE); //單擊窗口關閉按鈕時,結束程序運行
textarea = new JTextArea("TextArea");
textarea.addMouseListener(this); //為文本區注冊滑鼠事件監聽器
this.add(textarea); //文本區添加到框架的中部
JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); //面板為流布局,左對齊
this.add(panel,"North"); //面板添加到框架的北部
text_size = new JTextField("12",10);
panel.add(text_size);
text_size.addActionListener(this); //注冊文本行的單擊事件監聽器
checkbox_bold = new JCheckBox("粗體"); //復選框
panel.add(checkbox_bold);
checkbox_bold.addItemListener(this); //注冊復選框的選擇事件監聽器
checkbox_italic = new JCheckBox("斜體");
panel.add(checkbox_italic);
checkbox_italic.addItemListener(this);
this.addmyMenu(); //調用自定義方法,添加菜單
this.setVisible(true);
}
private void addmyMenu() //添加主菜單、快捷菜單、對話框
{
JMenuBar menubar = new JMenuBar(); //菜單欄
this.setJMenuBar(menubar); //框架上添加菜單欄
JMenu menu_file = new JMenu("文件"); //菜單
menubar.add(menu_file); //菜單欄中加入菜單
menu_file.add(new JMenuItem("打開")); //生成菜單項並加入到菜單
menu_file.add(new JMenuItem("保存"));
menu_file.addSeparator(); //加分隔線
JMenuItem menuitem_exit = new JMenuItem("退出");
menu_file.add(menuitem_exit);
menuitem_exit.addActionListener(this); //為菜單項注冊單擊事件監聽器
JMenu menu_edit = new JMenu("編輯");
menubar.add(menu_edit);
JMenu menu_style = new JMenu("字形");
menu_style.add(new JCheckBoxMenuItem("粗體")); //復選菜單項
menu_style.add(new JCheckBoxMenuItem("斜體"));
menu_edit.add(menu_style); //菜單加入到菜單中成為二級菜單
JMenu menu_color = new JMenu("顏色");
menu_edit.add(menu_color);
ButtonGroup buttongroup = new ButtonGroup(); //按鈕組
JRadioButtonMenuItem rbmi_red = new JRadioButtonMenuItem("紅",true); //單選菜單項
buttongroup.add(rbmi_red); //單選菜單項添加到按鈕組
menu_color.add(rbmi_red); //單選菜單項添加到菜單
JRadioButtonMenuItem rbmi_green = new JRadioButtonMenuItem("綠",true);
buttongroup.add(rbmi_green);
menu_color.add(rbmi_green);
JRadioButtonMenuItem rbmi_blue = new JRadioButtonMenuItem("藍",true);
buttongroup.add(rbmi_blue);
menu_color.add(rbmi_blue);
menubar.add(new JMenu("幫助"));
popupmenu = new JPopupMenu(); //彈出式菜單對象
JMenuItem menuitem_cut = new JMenuItem("剪切");
menuitem_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));//設置快捷鍵Ctrl+X
popupmenu.add(menuitem_cut); //加入剪切菜單項
menuitem_cut.addActionListener(this);
JMenuItem menuitem_ = new JMenuItem("復制");
menuitem_.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));//設置快捷鍵Ctrl+C
popupmenu.add(menuitem_);
menuitem_.addActionListener(this);
JMenuItem menuitem_paste = new JMenuItem("粘貼");
menuitem_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));//設置快捷鍵Ctrl+V
popupmenu.add(menuitem_paste);
menuitem_paste.addActionListener(this);
textarea.add(popupmenu); //文本區添加快捷菜單
dialog = new JDialog(this,"提示");
dialog.setSize(240,80);
label_dialog = new JLabel("",JLabel.CENTER);
dialog.add(label_dialog);
dialog.setDefaultCloseOperation(HIDE_ON_CLOSE); //單擊對話框的關閉按鈕時,隱藏對話框而不結束程序運行
}
public void actionPerformed(ActionEvent e) //單擊事件處理程序
{
if(e.getActionCommand()=="退出") //不能用switch(int)語句
System.exit(0); //單擊菜單項時結束程序
if(e.getActionCommand()=="剪切")
textarea.cut(); //將選中文本剪切送系統剪貼板
if(e.getActionCommand()=="復制")
textarea.();
if(e.getActionCommand()=="粘貼")
textarea.paste();
if(e.getSource()==text_size) //單擊文本行時,改變字型大小
{
int size=0;
try
{
size = Integer.parseInt(text_size.getText());
if (size<=0 || size>72)
throw new Exception("SizeException"); //拋出異常對象
java.awt.Font font = textarea.getFont();
textarea.setFont(new Font(font.getName(),font.getStyle(),size));
}
catch(NumberFormatException nfe)
{
label_dialog.setText("\""+text_size.getText()+"\" 不能轉換成整數,請重新輸入!");
dialog.setLocation(this.getX()+100,this.getY()+100);
dialog.setVisible(true);
}
catch(Exception ex)
{
if (ex.getMessage()=="SizeException") //捕獲自己拋出的異常對象
{
label_dialog.setText(size+" 字型大小不合適,請重新輸入!");
dialog.setLocation(this.getX()+100,this.getY()+100);
dialog.setVisible(true);
}
}
finally{}
}
}
public void itemStateChanged(ItemEvent e) //復選框選擇事件處理程序
{ //實現ItemListener介面中的方法
Font font = textarea.getFont();
int style = font.getStyle();
if (e.getSource()==checkbox_bold)
style = style ^ 1; //整數的位運算,異或^
if (e.getSource()==checkbox_italic)
style = style ^ 2;
textarea.setFont(new Font(font.getName(),style,font.getSize()));
}
public void mouseClicked(MouseEvent mec) //單擊滑鼠時觸發
{ //實現MouseListener介面中的方法
if (mec.getModifiers()==mec.BUTTON3_MASK) //單擊的是滑鼠右鍵
popupmenu.show(textarea,mec.getX(),mec.getY());//在滑鼠單擊處顯示快捷菜單
}
public void mousePressed(MouseEvent mep) { }
public void mouseReleased(MouseEvent mer) { }
public void mouseEntered(MouseEvent mee) { }
public void mouseExited(MouseEvent mex) { }
public void mouseDragged(MouseEvent med) { }
public static void main(String arg[])
{
new EditorJFrame();
}
}
『叄』 用java做一個java的編譯器
Javac編譯器讀取Java源代碼,並將其編譯成位元組代碼,說的直白一點就是把java語言翻譯成計算機可以識別的二進制代碼。
java的編譯器有很多種,有sun公司的jdk,有oracle的jdk,還有其他一些公司的,多採用sun公司的jdk。
java同時需要集成開發環境,它集成了java的編譯器,讓我們不必通過命令行來編譯java類文件,通過它我們可以快速的開發我們需要的程序。目前用的比較多的集成開發環境有eclipse和myeclipse,eclipse有很多具有針對性的版本來應對不同的開發,而myeclipse則是相對來說功能比較全面,當然也需要購買,個人建議myeclipse。
『肆』 程序猿專用十大在線編譯器(IDE)整理
1. CodeSandbox(基於 React 的在線代碼沙盒平台) 我常用的
① 主流的腳手架都支持,比如在線create-react-app,vue-cli等(在線 fork 修改),支持 github 登錄(項目導入),也支持 cli 上傳例子,例子可以在線訪問和下載,當然也支持內嵌到其他博客等網頁中。
② 地址:https://codesandbox.io/
③ 圖示
2. CodePen(前端代碼編輯運行的網站)
① CodePen 是一個完全免費的前端代碼託管服務,主要功能有:
② 地址:https://codepen.io/
③ 圖示
3. JSRUN(支持手機端的在線JS編輯器)
① jsrun是一款支持手機端的在線JS編輯器, HTML/CSS/Javascript在線代碼運行工具,js代碼在線測試調試,是runjs的升級版支持vue.js/angular.js的在線編輯器
② 地址:http://jsrun.net/
③ 圖示
4. jsFiddle(前端代碼編輯運行的網站)
① jsFiddle 是一個Web開發人員的練習場,可在線編輯和測試 HTML、CSS、JavaScript代碼片段。在 jsFiddle 編輯的代碼,可以保存,也可分享給其他人,還可嵌入到其他網頁
② 地址:https://jsfiddle.net/
③ 圖示
5. Ideone(C和C++的在線編譯和調試工具,支持其他的60種語言) 我常用
① Ideone是C和C++的在線編譯和調試工具,支持其他的60種語言。這個工具提供許多強大的功能,允許程序員快速高效的編譯源代碼
② 地址:https://www.ideone.com/
③ 圖示
6. Codechef(C,C ++和Java的在線編譯工具)
① 它支持C,C ++和Java,非常接近真正的桌面IDE。這是超快速和易於使用。適合於課堂和作業的學生,練習面試問題。
② 地址:https://www.codechef.com/ide
③ 圖示
7. JDoodle (C,C ++和Java的在線IDE)
① 支持協作代碼。它只是從一個簡單的文本區域開始,您可以粘貼代碼,然後單擊運行。您可以更改命令行參數並在運行該程序之前設置stdin。最適合新的在線編輯器不支持的許多舊語言。
② 地址:https://www.codechef.com/ide
③ 圖示
8. OnlineGDB (在線C,C ++,Java,PHP編譯器) 我常用
① 它支持C,C ++,PHP和Java編譯器。OnlineGDB的獨特功能是,您可以逐步調試您的代碼。一旦代碼被寫入,它可以很容易地格式化,使其看起來不錯。
② 地址:https://www.onlinegdb.com/
③ 圖示
9. GCC資源管理器
① GCC編譯器資源管理器是一個互動式在線編譯器,它顯示編譯後的C++、RISE、GO(以及更多)代碼的匯編輸出。
② 地址:https://gcc.godbolt.org/
③ 圖示
10. plnkr edit在線編輯器
① js的在線編輯器。
② 地址:http://plnkr.co/edit/
③ 圖示
『伍』 如何用java調用c語言編譯器實現在線編譯c語
要在java中調用c語言的庫,需要使用Java提供了JNI。
舉例說明
在c語言中定義一個 void sayHello()函數(列印Hello World);然後在Java中調用這個函數顯示Hello Word.
現在分別從Java和C語言兩部分說明:
1. Java 部分
首先定義一個HelloNative,在其中申明sayHello函數,函數要申明為Native 類型的.如下:
public class HelloNative {
public native void sayHello();
}
編譯這個類,生成class文件:
javac HelloWorld.java
利用javah生成需要的h文件
javah HelloNative
生成的 h文件大概如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloNative */
#ifndef _Included_HelloNative
#define _Included_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloNative
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloNative_sayHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
可以看一下上面自動生成的程序,程序include了jni.h,這個頭文件在 $JAVA_HOME下的include文件夾下. 還可以發現生成的函數名是在之前的函數名前面加上了Java_HelloNative。
2. C語言部分
根據上面生成的h文件編寫相應的代碼實現,建立一個 HelloNative.cpp用來實現顯示Hello World的函數.如下:
#include <stdio.h>
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_sayHello(JNIEnv *, jobject)
{
printf("Hello World!\n");
}
代碼編寫完成之後,我們再用gcc編譯成庫文件,命令如下;
gcc -fPIC -I/usr/lib/jvm/java-7-openjdk-i386/include -I/usr/lib/jvm/java-7-openjdk-i386/include/linux -shared -o libHelloNative.so HelloNative.cpp
這樣就會在當前目錄下生成一個libHelloNative.so的庫文件.這時需要的庫已經生成,在C語言下的工作已經完成了.
接下來需要在Java中編寫一個程序測試一下.在程序前,需要將我們的庫載入進去.載入的方法是調用Java的 System.loadLibrary("HelloNative");
public class TestNative
{
static {
try {
System.loadLibrary("HelloNative");
}
catch(UnsatisfiedLinkError e) {
System.out.println( "Cannot load hello library:\n " + e.toString() );
}
}
public static void main(String[] args) {
HelloNative test = new HelloNative();
test.sayHello();
}
}
但是再編譯後,運行的時候,問題又出現了.
Cannot load hello library:
java.lang.UnsatisfiedLinkError: no HelloNative in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloNative.sayHello()V
at HelloNative.sayHello(Native Method)
at TestNative.main(TestNative.java:13)
載入庫失敗,但是庫明明就是放在當前文件夾下的,怎麼會載入失敗呢?
用System.getProperty("java.library.path")查看,發現java.library.path中並不u存在當前的目錄.主要有以下的幾個解決辦法:
1) 將生成的庫復制到java.library.path有的路徑中去,當然這樣不是很好
2) 設置環境變數export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH ,將當前的目錄加入到LD_LIBRARY_PATH中
3) 設置java 的選項,將當前的目錄加入到其中 .java -Djava.library.path=. $LD_LIBRARY_PATH
這樣之後程序就能夠成功的運行了.可以看見顯示的"Hello World!"了
『陸』 java編譯器的作用是什麼
java編譯器的作用就是「編譯」,即將java源代碼編譯成中間代碼位元組碼文件。
編譯時,編譯器(java.exe)首先讀入 java 源代碼,然後進行語法檢查,如果出現問題就終止編譯。語法檢查通過後,生成中間代碼即位元組碼。
位元組碼文件是一種和任何具體機器環境及操作系統環境無關的中間代碼,它是一種二進制文件,是Java源文件由Java編譯器編譯後生成的目標代碼文件。
編譯器編譯生成與平台無關的位元組碼文件後,提供給 JVM (Java虛擬機)執行。
『柒』 java怎樣編譯成可執行程序exe
1. 從www.towerj.com獲得一個TowerJ編譯器,該編譯器可以將你的CLASS文件編譯成EXE文件。
2. 利用微軟的SDK-Java 4.0所提供的jexegen.exe創建EXE文件,這個軟體可以從微軟的網站免費下載,地址如下:http://www.microsoft.com/java/download/dl_sdk40.htm
jexegen的語法如下:
jexegen /OUT:exe_file_name
/MAIN:main_class_name main_class_file_name.class
[and other classes]
3. Visual Cafe提供了一個能夠創建EXE文件的本地編譯器。你需要安裝該光碟上提供的EXE組件。
4. 使用InstallAnywhere創建安裝盤。
5. 使用IBM AlphaWorks提供的一個高性能Java編譯器,該編譯器可以從下面的地址獲得:
http://www.alphaworks.ibm.com/tech/hpc
6. JET是一個優秀的Java語言本地編譯器。該編譯器可以從這個網站獲得一個測試版本:
http://www.excelsior-usa.com/jet.html
7. Instantiations公司的JOVE
http://www.instantiations.com/jove/...ejovesystem.htm
JOVE公司合並了以前的SuperCede,一個優秀的本地編譯器,現在SuperCede已經不復存在了。
8. JToEXE
Bravo Zulu Consulting, Inc開發的一款本地編譯器,本來可以從該公司的網頁上免費下載的,不過目前在該公司的主頁上找不到了。