我们为什么选择Java

大多数人选择Java可能只是因为听说Java前景好、Java比较好找工作、Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么概念的。其实我选择Java也是出于以上的原因,但是现在确实真正地爱上了Java。

那么现在我们来分析下Java的好处究竟在哪里。

简单易学

首先Java是一个面向对象的编程语言,容易理解。而且略去了多重加载、指针等难以理解的概念。并且实现了自动垃圾回收,大大简化了程序设计。

其次Java学习资料较多,从CSDN学院或其他在线学院中就可以找到很多Java学习视频,另外也有一些培训机构提供的有免费的Java视频课程。有这些学习资料,入门足矣。

跨平台

跨平台是Java最大的优势。Java运行在JVM(Java虚拟机)上,在任何平台只要安装了JVM。Java就可以运行。它架构在操作系统之上,屏蔽了底层的差异。真正实现了“Write once,run anywhere”。

安全

Java中没有指针,这样就没有办法直接访问内存了。另外Java也不容易出现内存泄露。

多线程

Java内置对多线程的支持,可以方便地在程序中实现多线程的功能。不像其他不支持多线程的语言,需要调用操作系统的多线程功能才能完成多线程的实现。

有丰富的类库

Java从出道至今已有10多年的历史,经过10多年的积累和沉淀,出现了很多优秀的开源社区,如Apache和Spring。这些优秀的社区提供了很多非常好的框架,借助这些框架可以使我们不用去关注Java底层的开发,而只需关注业务的实现。

使用广泛

不得不承认上面有一点是对的,Java确实有很多企业在用,而且都是用在大项目上。这就意味着Java方面的工作比较好找,另一点是在做Java开发时如果遇到问题,可以很容易从网上找到解决办法。

职业篇

Java初级程序员是最底层的,只需要掌握Java的基础知识就能够成为一名初级程序员。

Java程序员可以有三个进阶方向,分别是Android移动端开发(以下简称Android)、Web开发(以下简称Web)和通讯开发。这时目前主流的三大方向。其中最多的是Android和Web。下面分别介绍这三个方向。以下三个方向都需要有扎实的Java基础。

Android开发,主攻移动端应用的开发。移动端包括搭载Android系统的手机、平板、电视盒子等设备。

Web开发方向,主要有HTML5开发、B/S应用开发、微信开发。这里的HTML5开发是指移动端的HTML5开发。

通讯方向,主要是通讯服务器的开发,如游戏服务器、腾讯的QQ服务器等。

由于我从事Web开发方向,仅仅对其他方向略有了解,所以这里主要介绍Web方向。要进行Web开发需要达到中级程序员的水平,能够熟练使用SSH等框架。

而Java高级程序员则需要了解更多的框架和一些常用的应用服务器,如工作流、搜索引擎、缓存、JTA、JBoss、WebLogic等。

达到高级程序员水平后,很多人在这个阶段选择了不同的方向。有的人厌倦了编码和设计而转向了需求分析和产品经理,而有的人继续执着于技术这条路,成为了系统架构师。

工具篇

子曰“工欲善其事,必先利其器”,有一把顺手的“兵器”,能让我们的学习和工作达到事半功倍的效果,那么下面我们来看看有哪些好用的工具可以助我们开发。文本编辑器(适合初学者)

这里我们只说Windows平台下的文本编辑器。

有人可能说Windows下的记事本不就可以用吗,我们为什么还要用其他的文本编辑器呢?原因吗,首先记事本确实不好用,修改代码极为不便,而且有些换行标识不识别;其次效率低,使用记事本打开一个几K的文件可能没有什么感受,但是打开一个超过10M的文件的时候就能明显的感觉到卡了,比如我们的日志文件;最后容易出现问题,用记事本编辑过UTF-8格式的文件后,会给文件加上BOM头,这有时导致程序出现莫名的错误,所以作为程序员,最好不要使用记事本。

比较好用的文本编辑器有Editplus、UltraEdit、Notepad。其中Notepad是开源免费的,其他两个都是收费的。

IDE(适合入门后和项目研发)

IDE是集成开发环境的简称,使用IDE的目的是为了能让我们更快地构建项目、更方便地写代码,同时屏蔽了代码编译的动作。IDE都有代码高亮、代码提示以及错误提示等功能,同时我们可以借助IDE的插件实现代码管理、代码审查和其他一些好用的功能。

常用的IDE有Eclipse、NetBeans和IntelliJ IDEA。前两者都是免费的,后者提供有社区版本,也是免费的,但是企业版是收费的。其中Eclipse是用的最多的IDE。

在Eclipse上扩展的有两款优秀的IDE,Spring Tool Suite(STS)和大名鼎鼎的MyEclipse。前者免费后者收费,后者集成了前者的所有功能。这里我建议大家使用STS,因为STS添加了很多对Spring的相关支持,如果项目中用到了Spring,使用起来会非常方便。也可以在Eclipse上安装STS插件,能够达到同样的效果,Spring官网上有插件的安装方法,这里不再赘述。

技术图谱

java职业图谱

以上图谱详细描绘了每个级别都需要掌握哪些知识,此图仅供参考。在实际工作期间,一般是根据公司需要或项目需要来学习不同的技术。但还是建议多去学习些知识,我觉得有句话说的很对,“很多东西不是你觉得有用才去学,而是学了才知道它有用”,我一直信奉这句话,因为我就是这句话真正的受益者。

入门篇

俗话说“师傅领进门,修行靠个人”,所以说只要入门了,后面学习起来是很快的,而且比较容易。那么学习Java应该如何入门呢?

首先要理解面向对象的概念,这个很重要。但也不是说必须完全理解概念才能去学Java。而是先接触Java的基础知识,如类、属性、方法等。然后在学习的过程中理解面向对象的概念。

在大概理解了面向对象的概念后,这时你应该学会了一些Java的语法和一些API的使用。这时需要继续深入地去学习这些。同时要养成自己良好的编码习惯,Java有自己对包名、类名、方法名等的命名规范。这个时候要尝试按照规范写代码,同时甩掉以前写代码时养成的不良习惯。

在熟悉了常用的API及语法后要去学习I/O和流(Stream)以及多线程编程和网络编程。I/O和输入输出流,要熟练掌握。而在这个阶段暂时不需要深入了解多线程编程和网络编程。

在系列基础完成之后就需要去接触下数据库和JDBC,对于数据库不需要深入了解,能够创建表、查询表数据即可。然后尝试使用JDBC连接数据库,并对数据库中的数据做CURD操作。

在学习Java初期,我建议大家使用文本编辑器来写代码,一是有助于记忆Java中的一些关键字和常用类及方法,二是可以熟悉Java的常用命令。在使用了一段时间的文本编辑器后就可以使用IDE来开发了,使用IDE将使你写代码写得更快,也不容易出错。

基础是很重要的,虽然简单,但是也马虎不得。这里推荐几本书《Thinking in Java》、《Java 8编程参考官方教程》等图书(图书资源推荐)。

中级篇

入门后就可以选择主攻方向了,几个方向在职业篇中已有介绍。通讯开发方向其实在这个时候就可以转了,但是还是建议学习下Java中级的内容,这些内容也有助于你今后在通讯开发的路上走得更容易。因为我是主攻Web方向,所以这里我们只讨论Web方向。

在这个阶段你接触的知识面将更广,在学习Web开发之前首先需要学习HTML和CSS,然后再学习JS以及jQuery。在有一定基础之后就可以开始学习JSP和Servlet了,重点学习下JSP的内置对象及EL表达式,并试着去做一些页面。然后学习下Ajax,要能够熟练的使用JSON和XML来做数据交互。

以上内容学习完之后Java的基础部分就算是基本掌握了,下面就该学习一些框架了。建议先从Spring学起,Spring将成为你今后开发项目的核心框架。Spring也是现在项目中最常用的框架。可以深入的学习,试着去理解Spring的一些实现原理,这将有助于你更好的使用Spring。

学完Spring之后可以学习下ORM框架,比如Hibernate和MyBatis,这些相对于Spring来说要简单的多。主要学习与Spring的整合和Spring中的事务管理。一定要深入的了解数据库事务,这将对你今后的项目开发非常有帮助。

最后我们来说控制层的学习,这里我建议大家重点学习SpringMVC。因为SpringMVC是目前使用最为广泛的控制层,而且简单易学,已经有了要替代Struts的趋势了。但是Struts还是要学习下,毕竟还有一些公司在用,这将为你找工作加大一点筹码。

在学习这些内容的过程中一定要学习下代码管理工具SVN和Git,目前SVN在企业中用的较多,而开源社区一般都是用的Git。

有了JSP基础和掌握了框架的使用后就可以出去找工作了,在工作过程中这些知识你将掌握的更加牢固。也可能在工作过程中会遇到你没有学过的技术,不要怕,有了之前的基础你将很快掌握这些新的技术,加入工作的第一年将是你进步最快的一年。而加入工作之后你可能也不会有太多的时间来学习,这时候要约束好自己。不要忘了学习,学习是最好的进步方式。

高级篇

当我们参加了工作之后,开始接触更多的技术。如果有机会就多学习些技术,不求精通,但求会用,并且知道这项技术能够解决什么问题。开始在项目中参与设单元测试、缓存、集群、负载均衡、SOAP等是一定要掌握的。这些是在大型项目中比较常用的技术。然后可以根据自己的兴趣及业余时间去学习自己感兴趣的技术。

架构师之路

成为一名架构师一直是我的目标。一名优秀的架构师首先一定是一名卓越的程序员,架构设计不应仅仅是理论,它应当是在实践中产生的经验和结果。架构师也要有灵敏的嗅觉,能够看清未来技术的发展方向,应当避免在项目中使用已过时的技术或没有社区支持的技术。

作为一名架构师要掌握以下技能:

SOA:在微服务横行的年代,这项本领是必不可少的。

设计模式:这将有助于你设计出更加优雅的程序。

程序员的区别

同样是程序员,初级、中级与高级的区别在哪里呢?

初级程序员就是传说中的码农,依靠复制粘贴、比葫芦画瓢的方式完成代码的编写,通常一个方法几百行代码,恨不得一个类将所有的功能都实现,不考虑程序设计原则,也不考虑程序的执行效率,不考虑SQL注入的问题,更不去想如何能让我的程序质量更好,他们的目的仅仅是我的程序能够运行。很多程序员都会经历这个阶段,而这个阶段是最容易养成毛病的阶段。但是有的程序员很快就摆脱了这个阶段,也有很多程序员停留在这个阶段很长时间,哪怕是掌握了更多的技术,但是这个阶段形成的思维模式却没有改变,养成的毛病也没有改掉。

我们就能听到这样的声音“这是哪个傻X写的代码,写的太乱了,还没有注释”、“我去!这代码完全不敢动啊,逻辑太混乱了,牵一发而动全身啊”。这些基本上都是初级程序员写的代码。中级程序员更喜欢优雅的代码,而自己写出优雅的代码,封装、继承、抽象运用自如,能够独立完成系统中模块的开发。

高级程序员能够完成系统的设计,能够使用已掌握的技能解决问题。并且能够考虑到系统的扩展性、安全性、稳定性等问题。

至于架构师吗,首先要具备中大型项目的总体规划和设计经验,通常架构师考虑的要比高级程序员更多,有时需要考虑到项目的成本、工期、部署环境甚至一些商业因素等,不仅仅是技术上的问题。其次架构师同样需要有很好的沟通能力,一是与客户的沟通,二是与团队内部纯技术的沟通。

很多程序员都止步于中级级别,靠一手SSH技术行天下,而身处初级时养成的毛病仍然存在,有的甚至已经工作5年却一直是这样,可塑性极差,由于工作时间长也学会了一手掩盖问题的好本事,这类人毫不客气的说就是项目的祸害。也有一些人达到中级或高级级别后厌倦了编码,从而转做需求分析、产品经理或项目经理,在国内做技术确实也很难拿到高工资,这也是很多技术人员转型的原因。而我依然坚持我的技术之路,既然选择了就要坚定的走下去计文档的编写。能够为自己的项目选择合适的框架,并且能用自己学到的技术去解决项目中遇到的难题。

这时候根据项目和公司的差异用的技术也不尽相同,但是日志框架、项目构建

java学习群669823128

我们为什么选择JAVA的更多相关文章

  1. Java学习步骤

    我们为什么选择Java 大多数人选择Java可能只是因为听说Java前景好.Java比较好找工作.Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么 ...

  2. java计算器

       由于自己的实验报告 需要用Java来写一个实验报告.自己本没有怎么学过Java,但是学的话也就认真的学一下,毕竟技术这条路线是技多不压身.于是在网站上找来了一些资料,关于Java到底是干什么的, ...

  3. Java大数据应用领域及就业方向

    最难毕业季,2017高校毕业生达到795万,许多学生面临着毕业即失业的尴尬.面对着与日俱增的竞争形势和就业压力,很多毕业生选择去知了堂学习社区镀金,以提高自己的就业竞争力,其中Java大数据是学生选择 ...

  4. [Java 教程 01] Hello,Java!

    前言 从事编程已经有一段时间了,突然发现,Java作为我的第一编程语言,自己似乎对她并有一个系统的思想.当下Java依旧保持着超高的热度,新特性也不断出现,从当初学习的java6版本到最近刚出的jav ...

  5. java EE 新手入门了解

    郑重申明:本文转载至https://blog.csdn.net/Neuf_Soleil/article/details/80962686,在此深表感谢! 为什么选择java? 想必有很多初学者会像我一 ...

  6. Java程序员修炼之路

    作者简介:王成委,CSDN知识库特邀编辑,Java高级工程师,熟悉Java编程语言和Oracle数据库.专注于高并发架构设计和大数据存储方向的研究. 我们为什么选择Java 大多数人选择Java可能只 ...

  7. 【aliyun】学java,看这里,不迷茫!1460道Java热门问题

    阿里极客公益活动: 或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里系技术专家来云栖问答为你解答技术难题了 他们用户自己手中的技术来帮助用户成长 ...

  8. 【全集】大数据Java基础

    课程介绍 本课程是由猎豹移动大数据架构师,根据Java在公司大数据开发中的实际应用,精心设计和打磨的大数据必备Java课程.通过本课程的学习大数据新手能够少走弯路,以较短的时间系统掌握大数据开发必备语 ...

  9. 分享我收集的引擎、图形学、WebGL方面的电子资料

    本文分享我这一年以来收集的我认为比较经典的电子资料,希望能对大家有所帮助! 本文会不断更新! 目录 WebGL Insights OpenGL Insights Game Programming Pa ...

随机推荐

  1. s5_day3作业

    # 一.元素分类 # 有如下值集合[11, 22, 33, 44, 55, 66, 77, 88, 99, 90...],将所有大于 # # 的值保存至字典的第一个key中,将小于 # # 的值保存至 ...

  2. LeetCode:简化路径【71】

    LeetCode:简化路径[71] 题解参考天码营:https://www.tianmaying.com/tutorial/LC71 题目描述 给定一个文档 (Unix-style) 的完全路径,请进 ...

  3. Android 6.0 Kotlin 蓝牙扫描

    package com.arci.myapplication import android.app.Activityimport android.os.Bundleimport android.sup ...

  4. JMS、MQ、ActiveMQ

    JMS 的一个标准或者说是一个协议. 通常用于企业级应用的消息传递. 主要有topic 消息(1 对多), queue 消息(1对1). ActiveMQ 是一个JMS 的实现, apache 出的. ...

  5. 20145201 《Java程序设计》第二周学习总结

    20145201 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习了课本第三章内容,即JAVA基础语法. 3.1 类型.变量与运算符 基本类型:在java中基本类型主要可区分 ...

  6. hibernate 实体对象的三种状态以及转换关系。

    最新的Hibernate文档中为Hibernate对象定义了四种状态(原来是三种状态,面试的时候基本上问的也是三种状态),分别是:瞬时态(new, or transient).持久态(managed, ...

  7. Hibernate的一级缓存、二级缓存和查询缓存。

    Hibernate的Session提供了一级缓存的功能,默认总是有效的,当应用程序保存持久化实体.修改持久化实体时,Session并不会立即把这种改变提交到数据库,而是缓存在当前的Session中,除 ...

  8. SPFA算法 - Bellman-ford算法的进一步优化

    2017-07-27  22:18:11 writer:pprp SPFA算法实质与Bellman-Ford算法的实质一样,每次都要去更新最短路径的估计值. 优化:只有那些在前一遍松弛中改变了距离点的 ...

  9. Count and Say,统计并输出,利用递归,和斐波那契数列原理一样。

    问题描述:n=1,返回“1”:n=2,返回“11”:n=3,返回“21”:n=4,返回1211,.... 算法分析:和斐波那契数列道理差不多,都是后一个要依赖前一个元素.因此可以使用递归,也可以使用迭 ...

  10. 开发中Dialog多弹窗管理

    随着项目的不断迭代,加上产品经理大法(这里加一个弹窗提示,这里加一个引导….)各种弹窗在应用启动时候需要展示, 然而它们出现的时机还有可能重叠.我勒个擦...有没有一种优(tou)雅(lan)的方式来 ...