好久没有写技术文章了。最近有了一些新的认知,技术还是要坚持的,归结起来就是守正出奇,技术是我的正,毕竟从事了这么多年的技术工作,奇则是其他探索性副业。
java开发前介绍
平台无关性
java是一种开发语言,得益于Java的运行环境------Java虚拟机(JVM),其可以实现平台无关性。
当你编写Java代码并编译后,会生成一种被称为字节码(Bytecode)的中间代码,而不是直接生成特定操作系统的机器代码。这个字节码是可以在任何安装了JVM的系统上运行的。
当这个字节码在某个平台上运行时,JVM会将字节码转换为该平台的机器代码。因此,只要一个设备安装了JVM,无论这个设备的操作系统是Windows、Linux还是Mac,都可以运行Java程序。
很多开发语言比如go、python都是平台的无关的。但也有与平台有关的比如Objective-C、Visual Basic、Swift等。
java的开发源码格式
Java的源代码通常保存在扩展名为.java的文件中。这些文件包含了Java类的定义,每个文件通常包含一个公共类或接口。
当编译Java源代码时,Java编译器(javac)会生成扩展名为.class的字节码文件。这些文件包含了可以被Java虚拟机(JVM)执行的字节码。
如果有多个.class文件或者其他资源(如图片、音频、配置文件等),可以将它们打包到一个JAR(Java Archive)文件中,以便于分发和部署。JAR文件是一个包含了多个.class文件和其他资源的压缩文件,它可以被JVM直接执行。
对于Web应用程序,可以使用WAR(Web Application Archive)文件格式。WAR文件是一种特殊类型的JAR文件,用于打包Java Web应用程序的所有组件,包括Servlets、JSP、HTML、CSS、JavaScript、图像文件、库文件等。
java的war和jar区别
java的war和jar包都是源代码编译后的产物。
-
文件类型:WAR文件是Web Application Archive的缩写,主要用于分发和部署Web应用程序。JAR文件是Java Archive的缩写,主要用于分发Java类库和应用程序。
-
内容:WAR文件通常包含JSP、HTML、JavaScript等Web资源文件,以及Java类、库等。JAR文件主要包含Java类和库。
-
使用场景:WAR文件主要用于Web服务器或应用服务器,如Tomcat、Jetty、WebLogic等。JAR文件可以在任何安装了Java环境的地方运行。
-
结构:WAR文件有特定的目录结构,如WEB-INF目录用于存放配置文件和类文件等。JAR文件没有特定的目录结构,通常按照开发者的需要来组织。
-
打包工具:WAR文件通常使用Ant、Maven等工具进行打包。JAR文件可以使用Java自带的jar命令进行打包。
-
运行方式:WAR文件需要部署到服务器上才能运行。JAR文件可以直接通过java -jar命令运行。
java开发
安装jdk
Java Development Kit是Sun公司(已被Oracle收购)针对Java开发员的软件开发工具包。这个安装网上有很多教程,这里就不做介绍了。可以安装经典的java 8,也可以是长期稳定版本11和17。
安装Idea、maven和数据库
对于前端开发来说使用的是vscode,对于java这里使用idea。idea有官网,可以直接下载社区版使用。
maven是java开发的构建工具可以类比为前端开发的npm。maven也需要下载,现成的教程也很多,这里就不做介绍了。maven我安装的是3.6.7版本。
如果项目需要使用使用数据库,还需要下载数据库,比如mysql,mysql下载教程也很多,不做介绍了。
使用Spring Boot开发
对于前端的同学来说,可以理解Spring Boot类比使用vue-cli或者create-react-app生成的代码产物。
Idea有专业版和社区版,专业版有30天试用期,社区版免费。但是使用社区版不能直接生成Spring Boot的项目,需要在Spring Boot的官网配置生成后下载。
现在vue-cli也可以网页配置生成了,原理都是一样的。
注意:如果本机安装的是java 8,以及本机安装的idea是2022年版本的,可能会提示有问题
这个时候需要修改下载后代码中的pom.xml文件,这个文件类比前端的package.json文件。具体修改
修改spring-boot-starter-parent
版本,以及修改java版本,降低版本。
项目结构介绍
如下所示
也可以创建application.properties/yml
作为项目的配置文件:可以配置依赖文件里面的依赖包,也可以配置spring属性。
在Idea右侧有maven插件,可以用来执行maven的相关命令,而不用手动在命令行执行。
好了后面就可以进行java或Spring Boot的开发学习和研究了。个人觉得java开发学习曲线要比前端学习陡峭,入门相对较难。