【java开发】快速搭建java开发环境(离线开发、在线开发)
文章目录
- 1、简介
- 2、下载和安装jdk
- 2.2 下载jdk
- 2.2 配置环境变量
- 2.3 常见命令
- 3、jdk开发
- 3.1 测试代码(hello world)
- 3.2 测试代码(animal, dog)
- 3.3 测试代码(circle, cylinder)
- 3.4 测试代码(Student, Undergraduate)
- 3.5 测试代码(webserver)
- 3.6 测试代码(JavaFX鼠标事件)
- 3.7 测试代码(JavaFX分割控件)
- 4、VSCode开发 java
- 5、IDEA开发java
- 6、Eclipse开发java
- 7、Netbeans开发java
- 8、Android Studio开发java
- 9、在线开发Java代码的网站
- 9.1 w3cschool
- 9.2 菜鸟教程
- 9.3 在线工具tool.lu
- 9.4 dooccn
- 9.5 compilejava(支持多个类)
- 9.6 rextester(支持多个类)
- 9.7 replit(支持多个类)
- 9.8 ideone(支持多个类)
- 10、Linux环境中搭建Java开发环境
- 10.1 下载jdk
- 10.2 安装jdk
- 结语
1、简介
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。
Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。
Java 是一门面向对象编程语言,不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念。Java 不但可以用来开发网站后台、PC 客户端和 Android APP,还在数据分析、网络爬虫、云计算领域大显身手。
2、下载和安装jdk
2.2 下载jdk
https://www.oracle.com/java/technologies/downloads/#java8
Java SE Development Kit 8u333 Java SE subscribers will receive JDK 8
updates until at least December of 2030.
具体中间过程就不说了,一直下一步即可,路径保持默认即可!
2.2 配置环境变量
JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0
JRE_HOME=C:\Program Files (x86)\Java\jre8
Path+=%JAVA_HOME%\bin;%JRE_HOME%\bin
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
这里总结了一段一键安装jdk的bat脚本代码如下:
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
chcp 65001set jdkpath=C:\Program Files (x86)\Java\jdk1.8.0
set jdkreg=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentecho 正在安装jdk,请不要执行其他操作
rem start /WAIT C:\jdk-8u221-windows-i586.exe /qn INSTALLDIR=%jdkpath%set JAVA_HOME=%jdkpath%
set PATH=%PATH%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin
set CLASSPATH=.;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\lib\tools.jarset RegV=HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentreg add "%jdkreg%" /v "JAVA_HOME" /d "%JAVA_HOME%" /f
reg add "%jdkreg%" /v "Path" /t REG_EXPAND_SZ /d "%PATH%" /f
reg add "%jdkreg%" /v "CLASSPATH" /d "%CLASSPATH%" /f
mshta vbscript:msgbox("Java环境已成功安装!",64,"成功")(window.close)
exit
2.3 常见命令
- java
检查jdk是否安装成功,如下图:
java -version
- javac
编译的Java程序,生成.class文件。
javac
javaw
javaw.exe是相似的和java.exe 是一个win32的GUI应用,应用提供自己的GUI窗口,不启用控制台。javah
功能说明:C 头文件和 Stub 文件生成器。javah 从 Java 类生成 C 头文件和 C 源文件。这些文件提供了连接胶合,使 Java 和 C 代码可进行交互。javap
功能说明:Java 类文件解析器。
3、jdk开发
- 代码文件都在同一个文件夹内
javac HelloWorld.java
java HelloWorld
- 代码文件在不同的文件夹内(定义包)
javac -d bin HelloWorld.java
java -cp bin;. com.homework.HelloWorld
3.1 测试代码(hello world)
- HelloWorld.java
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World, 爱看书的小沐!");}
}
3.2 测试代码(animal, dog)
- Animal.java
class Animal {void eat() {System.out.println("animal : eat");}
}
- Dog.java
class Dog extends Animal {void eat() {System.out.println("dog : eat");}void eatTest() {this.eat(); super.eat();}
}
- Test.java
public class Test {public static void main(String[] args) {Animal a = new Animal();a.eat();Dog d = new Dog();d.eat();d.eatTest();}
}
3.3 测试代码(circle, cylinder)
- Circle .java
public class Circle{private double radius;public Circle(){radius = 0;}public Circle(double r){radius = r;}public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}public double getArea() {return Math.pow(this.radius, 2)*Math.PI;}; public double getPerimeter() {return this.radius*2*Math.PI;}public static void main(String[] args) {Circle c = new Circle(1.234);System.out.println("Radius:" + c.getRadius());System.out.println("Perimeter" + c.getPerimeter());System.out.println("Area" + c.getArea());}
}
- Cylinder .java
public class Cylinder extends Circle{private double height;public Cylinder(double r, double h) {this.height = h;setRadius(r);}public double getVolume() {return getArea()*this.height;} public static void main(String[] args) {Cylinder c = new Cylinder(5.0, 10.0);System.out.println("Radius:" + c.getRadius());System.out.println("Perimeter" + c.getPerimeter());System.out.println("Area" + c.getArea());System.out.println("Volume" + c.getVolume());}
}
运行结果如下:
3.4 测试代码(Student, Undergraduate)
- Student.java
package T1;
public class Test {public static void main(String[] args) {Student stu = new Student("student", 100);stu.show();Undergraduate undergraduate = new Undergraduate("Undergraduate", 20, "本科");undergraduate.show();}
}
class Student {private String name;private int age;public Student() {super();}public Student(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getAge() {return age;}public void setAge(int age) {this.age = age;}public void show() {System.out.println("名字:" + this.name + "\t年龄:" + this.age);}
}
class Undergraduate extends Student {private String degree;public Undergraduate(String name, int age, String degree) {super(name, age);this.degree = degree;}public void show() {System.out.println("名字:" + super.getName() + "\t年龄:" + super.getAge() + "\t学位:" + this.degree);}
}
3.5 测试代码(webserver)
- WebTest .java
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class WebTest {public static void main(String[] args) {try {ServerSocket serverSocket = new ServerSocket(80);while (true) {Socket client = serverSocket.accept();OutputStream clientOutStream = client.getOutputStream();clientOutStream.write(("HTTP/1.1 200\n"+ "Content-Type: text/html\n"+ "\n"+ "<h1> Hello, my simple webserver!</h1><br>爱看书的小沐").getBytes());clientOutStream.flush();clientOutStream.close();}} catch (IOException e) {e.printStackTrace();}}}
命令行编译和执行代码如下:
浏览器中运行如下:
3.6 测试代码(JavaFX鼠标事件)
- MainWindow.java
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;public class MainWindow{private JFrame jf;public MainWindow() {jf=new JFrame("爱看书的小沐的第一个Java窗口");Container con = jf.getContentPane();con.setBackground(Color.yellow); //设置窗口背景色jf.setBounds(50,100,500,200); //设置窗口在屏幕上的位置和大小jf.setVisible(true);jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //释放当前窗口//1、用实现MouseListener接口实现//jf.addMouseListener(myMouseListener);//2、用继承MouseAdapter类实现jf.addMouseListener(myMouseAdapter);}MouseListener myMouseListener = new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {System.out.println("鼠标释放");//鼠标按下后释放触发}@Overridepublic void mousePressed(MouseEvent e) {System.out.println("鼠标按下");//鼠标按下时触发 }@Overridepublic void mouseExited(MouseEvent e) {System.out.println("光标移除");//鼠标的光标移出到组件触发}@Overridepublic void mouseEntered(MouseEvent e) {System.out.println("光标移动到组件");//鼠标的光标移动到组件触发}@Overridepublic void mouseClicked(MouseEvent e) {System.out.println("鼠标发生过单机事件");//鼠标发生单机事件时触发if(e.getButton()==e.BUTTON1){ // 判断获取的按钮是否为鼠标的右击 jf.setTitle("MouseListener: " + e.getX()+","+e.getY()); // 获得鼠标点击位置的坐标并发送到标签的文字上}}};MouseAdapter myMouseAdapter = new MouseAdapter() {public void mouseClicked(MouseEvent e) {//System.out.println("鼠标点击了");jf.setTitle("MouseAdapter: " + e.getX()+","+e.getY());}};public static void main(String[] args) {new MainWindow();}
}
3.7 测试代码(JavaFX分割控件)
- MainWindow.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; class ImagePanel extends JPanel {Image image;public ImagePanel() {image = Toolkit.getDefaultToolkit().createImage("d:/test/test.gif");}@Overridepublic void paintComponent(Graphics g) {super.paintComponent(g);if (image != null) {g.drawImage(image, 0, 0, this);}}}
public class Main {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {//myPanel1JButton button1 = new JButton("显示滚动条");JButton button2 = new JButton("隐藏滚动条");JButton button3 = new JButton("退出");JPanel myPanel1 = new JPanel();myPanel1.setLayout(new GridLayout(3,1,5,5));myPanel1.add(button1);myPanel1.add(button2);myPanel1.add(button3);//myPanel2JPanel myPanel2 = new ImagePanel();//splitPaneJSplitPane splitPane = new JSplitPane();splitPane.setLeftComponent(myPanel1);splitPane.setRightComponent(myPanel2);splitPane.setDividerSize(1);splitPane.setOneTouchExpandable(true);splitPane.setContinuousLayout(true);splitPane.setDividerLocation(150);//frameJFrame frame = new JFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(400, 400);frame.setVisible(true);frame.setContentPane(splitPane);//eventbutton3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}});}});}
}
4、VSCode开发 java
官方网站:https://code.visualstudio.com/
(1)安装插件Extension Pack for Java
(2)安装OpenJDK 11+
(3)settings.json中添加设置如下:
"java.home": "C:\\Users\\tomcat\\Desktop\\microsoft-jdk-17.0.3-windows-x64\\jdk-17.0.3+7",
(4)重启VSCode
5、IDEA开发java
官方网站:https://www.jetbrains.com/idea/
作为一款基于Java的顶级IDE,IntelliJ往往被大型企业所使用。其开发环境能够提供诸如:智能源代码索引、可靠的重构、以及动态代码分析等,独特的企业级功能函数。
IntelliJ IDEA Community Edition(社区版)是一款免费的 Java IDE(集成开发环境),主要用于 Android 应用开发、Scala、Groovy、Java SE 和 Java 编程。
目前,该IDE有两种变体,分别是:免费的社区版和高级的终极版。其中,高级版本是为适应企业级需求而量身定制的。
6、Eclipse开发java
官方网站:https://eclipse.org/
IBM于2001年末开发并发布了Eclipse。它能够提供的插件数量远超其他IDE。Eclipse通过自带的多种插件和特性函数,来加快程序的开发速度。其中,Junit、testing、MAVEN、Spring Framework和Subversion都有Eclipse对应的插件。
Eclipse 是一款主要用 Java 编写的免费 Java IDE。Eclipse 允许你创建各种跨平台的可用于手机、网络、桌面和企业领域的 Java 应用程序。通过插件,你也可以用其他编程语言开发应用程序,语言包括C、C ++、JavaScript、Perl、PHP、Prolog、Python、R、Ruby(包括 Ruby on Rails 框架),等等。
7、Netbeans开发java
官方网站:https://netbeans.org/
NetBeans拥有庞大的Java开发人员用户群,其中包括面向企业、嵌入式系统、Web、移动、桌面应用等领域的专业开发人员。目前,Oracle已将NetBeans作为其Java 8及更高版本的官方IDE。
1996年,NetBeans源于捷克的一个学生项目,其最初版是在2014年被发布的。由于免费且开源,因此它非常适合学生和初学者。您可以在该开发平台上找到所有主流框架的插件。其出色的功能,可被用于不同的环境与应用目的。
NetBeans是完全使用Java编写的,可以支持Windows、Mac、Oracle、Solaris和 Linux系统。该开发平台为端到端的软件开发生命周期,提供了需求分析,应用程序设计、开发、调试、分析和测试等一条龙的服务。
NetBeans IDE 既可用于 Java 开发,也支持其他语言,特别是 PHP、C/C ++,和 HTML5。
8、Android Studio开发java
https://developer.android.google.cn/studio/
Android Studio provides the fastest tools for building apps on every type of Android device.
9、在线开发Java代码的网站
下面几个网站都是简易的Java运行环境,只能运行JDK自带的函数,不能导入包,更不能运行外部项目。
9.1 w3cschool
https://www.w3cschool.cn/tryrun/runcode?lang=java-openjdk
- 测试代码如下:
import java.text.SimpleDateFormat;
import java.util.Date;public class Main {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public static void main(String[]args) {Main a = new Main();a.setName("爱看书的小沐");SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");Date date = new Date(System.currentTimeMillis());String s = String.format("Hello %s!", a.getName());System.out.println(s);System.out.println(formatter.format(date));}
}
9.2 菜鸟教程
https://c.runoob.com/compile/10/
菜鸟在线Java运行,也能运行其他主流的编程语言,如:Python、C、PHP、Node.js、C#、Ruby、Go等。
- 测试代码如下:
import java.util.ArrayList;public class Cat { public void eat() { System.out.println("吃鱼"); } public void work() { System.out.println("抓老鼠"); } public void speak() { ArrayList<String> sites = new ArrayList<String>();sites.add("postman");sites.add("swagger");sites.add("mock");sites.add("jmeter");System.out.println(sites);}public static void main(String[] args) {System.out.println("Hello Cat!");Cat cat = new Cat();cat.eat();cat.work();cat.speak();}
}
9.3 在线工具tool.lu
https://tool.lu/coderunner/
- 测试代码如下:
import java.util.LinkedList;public class Untitled {public static void main(String[] args) {LinkedList<String> sites = new LinkedList<String>();sites.add("Google");sites.add("Runoob");sites.add("Taobao");sites.addFirst("Wiki");System.out.println(sites);System.out.println("hello 爱看书的小沐!");}
}
9.4 dooccn
https://www.dooccn.com/java/
9.5 compilejava(支持多个类)
https://www.compilejava.net/
支持一个文件包含多个类的定义。
- 测试代码如下:
class Shape {void draw() {}
}class Circle extends Shape {void draw() {System.out.println("Circle.draw()");}
}class Square extends Shape {void draw() {System.out.println("Square.draw()");}
}// tip: each public class is put in its own file
public class main1
{// tip: arguments are passed via the field below this editorpublic static void main(String[] args){Square t = new Square();t.draw();System.out.println("Hello, 爱看书的小沐!");}
}
9.6 rextester(支持多个类)
https://rextester.com/l/java_online_compiler
在线编译器rextester打开即用,不需要登陆,也不需要下载,安装,配置等。
支持一个文件包含多个类的定义。
- 测试代码如下:
//'main' method must be in a class 'Rextester'.
//openjdk version '11.0.5' import java.util.*;
import java.lang.*;abstract class Animal { abstract void eat();
} class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void work() { System.out.println("抓老鼠"); }
} class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void work() { System.out.println("看家"); }
}class Rextester
{ public static void main(String args[]){System.out.println("Hello, 爱看书的小沐!");System.out.println("来了一只小猫!");Cat c = new Cat();c.eat();c.work();System.out.println("来了一只小狗!");Dog d = new Dog();d.eat();d.work();}
}
9.7 replit(支持多个类)
https://replit.com/@fxyublib/SlategreySlightApplescript#Main.java
支持一个文件包含多个类的定义。需要用户注册登陆
- 测试代码如下:
class Animal {void eat() {System.out.println("animal : eat");}
}class Dog extends Animal {void eat() {System.out.println("dog : eat");}void eatTest() {this.eat(); // this 调用自己的方法super.eat(); // super 调用父类方法}
}public class Main {public static void main(String[] args) {System.out.println("Hello, 爱看书的小沐 2022!");System.out.println("");System.out.println("Rain rain go away,");System.out.println("Come again another day,");System.out.println("Little Betty wants to play,");System.out.println("Rain rain go away.");System.out.println("");Animal a = new Animal();a.eat();Dog d = new Dog();d.eatTest();}
}
9.8 ideone(支持多个类)
https://www.ideone.com/kGDKya
支持一个文件包含多个类的定义。
- 测试代码如下:
/* package whatever; // don't place package name! */import java.util.*;
import java.lang.*;
import java.io.*;class Animal{public void move(){System.out.println("动物可以移动");}
}class Dog extends Animal{public void move(){System.out.println("狗可以跑和走");}
}/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{public static void main (String[] args) throws java.lang.Exception{// your code goes hereSystem.out.println("hello, 爱看书的小沐 2022"); System.out.println("Hickory,dickory,dock,"); System.out.println("The mouse ran up the clock,"); System.out.println("The clock struck one,"); Dog d = new Dog();d.move();}
}
10、Linux环境中搭建Java开发环境
10.1 下载jdk
https://www.oracle.com/java/technologies/downloads/#java8-linux
10.2 安装jdk
将下载好的安装包上传到Linux环境中(比如WinSCP)。
cd /usr/local
输入ll查看传入Linux环境的安装包,然后使用tar命令解压该压缩包。
tar -zxvf /usr/local/jdk-8u181-linux-x64.tar.gz
可以给jdk包修改名字,使用mv命令。
mv /usr/local/jdk1.8.0_181 /usr/local/java
修改配置文件,配置环境变量,在命令行输入:
vi /etc/profile
输入“G”定位到最后一行,按“i”进入编辑模式,在最下面添加如下几行信息:
export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
让配置文件生效,可以输入如下命令或者是重启系统:
source /etc/profile重启命令:
init 6
reboot
查看安装情况:
java -version
结语
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地
//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!
【java开发】快速搭建java开发环境(离线开发、在线开发)相关推荐
- 房屋收租小程序开发快速搭建
房屋收租小程序开发,房屋收租小程序开发快速搭建.伴随着城市化进程过程加速,在我国外来人口总数也在持续提升,租房子要求越来越大,促进了在我国房产租赁领域的发展趋势.可是伴随着租房子需要的逐步提升,传统式 ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- 基于 Jenkins 快速搭建持续集成环境
持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...
- 基于Jenkins 快速搭建持续集成环境
2019独角兽企业重金招聘Python工程师标准>>> 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开 ...
- linux hudson svn,Hudson Maven SVN快速搭建持续集成环境
Maven 跨平台的项目管理工具 Apache组织中颇为成功的开源项目 服务于Java平台的项目构建,依赖管理和项目信息管理 持续集成 快速 高频率 自动 构建 所有源码 反馈 目前最流行的开源持续集 ...
- CentosX64使用yum快速搭建xen虚拟化环境
CentosX64使用yum快速搭建xen虚拟化环境 Xen的大名想必已经被众SA所熟知.Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达100个满特征的操作系统.操 ...
- 【MQTT从入门到提高系列 | 01】从0到1快速搭建MQTT测试环境
这是机器未来的第24篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125532208 1. mosquitto概述 Ecl ...
- python开发erp系统odoo_开源erp软件odoo在线开发环境部署实录
1.前言 pscloud(odoo)是优秀的开源erp,采用微应用方式向企业客户交付业务应用功能,包含海量的经过全球客户验证的业务应用APP,且odoo基于python的底层框架也非常优秀,特别适合于 ...
- 基于Jenkins快速搭建持续集成环境
看了园友张善友的博文,尝试成功.便有此作.原网址: 基于 Jenkins 快速搭建持续集成环境 天下事有难易乎?为之,则难者亦易矣:不为,则易者亦难矣. 首先要学会使用MSBuild构建脚本 附网址: ...
最新文章
- Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序
- mybatis mapper.xml入参
- [python]使用virtualenv处理python版本问题
- memcache如何更新mysql_使用MySQL触发器如何实现memcache自动更新
- NUC972配置为支持NFS
- Tomcat服务器的安装及配置
- Linux的基础知识——mmap父子通信进程和匿名通信
- 微软:“不好意思,我们还不够Cool,不能运行”
- 微信公众账号 token 验证失败 解决办法
- “请求未在nginx中配置的域名时,给浏览器返回508错误码”配置示例
- VirtualBox上编译android遇到共享文件夹引起的问题
- javaee7实现websocket_websocket协议,tcp分包与粘包解决
- JS中动态创建元素的三种方法
- 【AliOS Studio】AliOS Studio初体验
- 索尼投屏无法显示服务器,支持索尼Xperia 1投屏到电脑的方法推荐
- 前端使用AudioContent左右声道切换
- 文件头格式标准魔数-magic number和mime.types
- spark streaming 整合kafka 报错 KafkaConsumer is not safe for multi-threaded access
- 电源正极电流检测:差分放大器与电流传感器放大器的对比
- 阿里实习生测试一面(2017.3.29)