网站首页 > 技术文章 正文
说起来,在大学里面我学过的编程语言只有c++和java。这其中c++是作为必修课学的,而java是作为选修课学的。至于后面的c、汇编、python、js这些语言,那都是工作了之后才学的。至于这些语言有什么用,在什么场景下使用效率最高,其实说实话,当时心里不是很清楚,等到真正明白过来,基本上已经是工作几年后的事情了。
asm和c一般用作底层开发,虽然大多数学习都把c语言作为必修课,但是坦率来讲,真正高水平的c语言开发工程师其实不多,汇编就更少了,看过nginx和lua代码的同学应该深有体会。通讯厂商、芯片厂商,还有一些单片机设备、白色家电、黑色家电,这些设备上运行的代码大多数都是asm和c编写的。c++和java是上层应用使用较多的编程语言,c++在游戏和大型软件开发中使用较多,当然这也和具体公司有关。按我的了解,c++在腾讯就用的比较多,java在阿里巴巴用的不少。使用c++多数是为了兼顾效率和面向对象,而java语言则照顾到网络开发、网站开发、分布式、android开发等很多方面。另外,合格的java工程要比c++工程师多很多。一个5年的工程师,他可以说精通java,但是同样的年限下,他一般不会说自己精通c++。而python、js、html这些,也是使用较多的脚本语言。python用于机器学习、网站搭建、软件原型、测试脚本开发,十分方便。而js,既可以用于前端开发。也可以用于后端开发。自从出现了node.js之后,使用js的场景也越来越多了。甚至于,由于混合编程的流行,使用js和ionic这样的框架开发app也不是多复杂的事情。
如果只是开发上层应用,java无疑是比较好的选择。不管是下载、安装,还是学习资源、学习教程,都非常方便,更不用说五花八门的jsp开发框架了。但是对于我来说,学习java的根本动力就是分布式开发,特别是apache下面的hadoop、hdfs、hbase,这些基本是分布式开发的标配。此外,编写健壮的java程序相对而言是容易的,而同样的逻辑用c或者c++程序来开发要复杂的多,单是关于内存的问题就够让人头痛的了。
1、jdk安装
如果是windows开发,一般使用oracle公司的jdk进行开发。如果是ubuntu开发,既可以选择openjdk,也可以选择oracle公司的jdk。jdk一般包括了编译环境和运行环境两个部分。
2、ide安装
很多同学安装完jdk之后,都喜欢安装ide,比如说eclipse,或者是netbeans。如果是项目开发,这无可厚非,但是如果自己学习,我还是建议大家安装一个代码编辑工具就可以了。比如说sublime就不错了,在windows、linux、mac上面都可以安装这个软件。
3、设置环境变量
设置环境变量比较简单。一般设置三个系统变量,分别是JAVA_HOME、CLASSPATH、Path。其中JAVA_HOME设置为C:\Program Files (x86)\Java\jdk1.8.0_91,CLASSPATH设置为.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;,Path只需要在原来的环境变量下面添加这两个属性就可以了,分别是%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin。
4、常用的java工具
常用的命令工具主要有javac、jar、java、javadoc、javap、jdb。javac是编译工具,它既可以编译单个文件,也可以编译多个文件。jar负责生成jar文件,主要是将多个class文件压缩在一起。java是虚拟机命令,它负责将class文件加载到虚拟机执行。javadoc负责文档的自动生成,内容来自于java文件中的注释。javap是反汇编文件,一般添加一个-c选项即可。jdb类似于gdb,可以用它对生成的class文件进行调试。
5、入门demo
这个无敌的入门demo几乎是各个语言学习的标配。javac hello.java & java hello,这样可以运行起来了。主要执行的时候是java hello,而不是java hello.class。
6、多个java文件编译
如果需要对多个文件进行编译,也可以直接用javac来进行处理。假设有一个目录test,test中有两个文件a.java和b.java。那么在a.java和b.java的开头,都要添加代码package test;。然后进行编译,输入javac test/*.java。最后执行的时候,只要输入java test/hello即可。
7、引用第三方库
如果编译的过程中使用了第三方库,那么只要在javac中添加cp选项即可。比如,像这样javac -cp test/junit-4.12.jar test/*.java。
8、反汇编java
多使用javap工具是学习java的一个重要方法,它可以清楚地告诉你,代码最终是编译成什么样子,比如说最简单的hello程序,最后编译出来是这样的,
9、jdb调试
还是以刚才的hello程序为例,开始的时候输入jdb hello,接着输入stop in hello.main,最后输入run。有了这三步,程序就已经加载好了,后面就可以单步调试了。不管java语言是这样,几乎所有的脚本语言都可以编译、调试、反汇编,这三个工具真的非常重要,希望大家好好掌握和应用。
10、生成jar文件,且被引用
假设有test目录,test下有hello.java文件。首先hello.java的开头必须有package test;这段代码。其次,利用javac test/*.java生成class文件。接着,利用jar -cvf test.jar test/*.class创建test.jar文件。此时如果需要引用test.jar,直接利用javac -cp ./test.jar process.java即可。注意,在process.java中添加import test.hello代码。最后,如果需要执行process,直接输入java process即可。当然这个时候,如果用解压工具可以发现,jar文件中除了class文件之外,还有一个META-INF目录,这个目录下面有一个manifest.mf文件。
11、参考书籍
建议先学习好一本书的情况再去参考其他的数据,比如说《java编程思想》。如果这本书看完了,那么可以去参考其他的书籍,比如说《java核心技术》等等。
12、后面的话
一般教程上面学习java是这么安排的:a、学习基本语法,包括关键字、变量、计算、循环、判断、数组、编译、调试等等;b、学习类、包、继承、封装、多态、嵌套类、抽象类、接口、匿名类等等;c、学习第三方库,包括多线程、网络、数据库、日志、单元测试、gui、jni开发等等;d、到了这一步,一般会学习java的各个框架,比如structs、spring、hibernate、ibatis、mybatis等等,好一点的培训机构还说带一点hadoop、hdfs、hbase这些内容;e、等到上面的知识点都学完了,一般都会开始进行项目实战了,比如网上商城、爬虫、分布式监控、android开发等等。
猜你喜欢
- 2024-11-05 centos7手工搭建部署Java web 环境(jdk、tomcat)
- 2024-11-05 linux安装jdk教程(linux安装jdk1.8步骤)
- 2024-11-05 Java环境快速搭建(javaee环境搭建)
- 2024-11-05 Linux入门指南-搭建JAVAEE开发环境
- 2024-11-05 干 java 开发3年了,你还不知道 Linux 中有三种方式安装 JDK?
- 2024-11-05 linux 安装基础软件-jdk-mysql-tomcat
- 2024-11-05 Linux下JDK到底应该安装在哪儿?(linuxjdk安装路径)
- 2024-11-05 构建高可用ZooKeeper集群(高可用集群搭建详细步骤)
- 2024-11-05 Linux上安装jdk Tomcat mysql redis等教程
- 2024-11-05 Java开发必会的Linux命令(java开发用什么linux)
- 最近发表
-
- 使用Knative部署基于Spring Native的微服务
- 阿里p7大佬首次分享Spring Cloud学习笔记,带你从0搭建微服务
- ElasticSearch进阶篇之搞定在SpringBoot项目中的实战应用
- SpringCloud微服务架构实战:类目管理微服务开发
- SpringBoot+SpringCloud题目整理
- 《github精选系列》——SpringBoot 全家桶
- Springboot2.0学习2 超详细创建restful服务步骤
- SpringCloud系列:多模块聚合工程基本环境搭建「1」
- Spring Cloud Consul快速入门Demo
- Spring Cloud Contract快速入门Demo
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)