
Java软件工程师的未来发展方向大致分为两类:
一是成为管理人员,例如产品研发经理,技术经理,项目经理等;
二是继续他的技术工作之路,成为高级软件工程师、需求工程师等。 Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
Java语言是编译解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,随着JIT(Just-In-Time)编译器技术的发展,Java的运行速度可以和优化过的本地代码相媲美。
Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
和C/C++的差异 熟悉C语言和C++语言的读者一定想搞清楚这个问题,实际上,Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java看成是类C语言发展和衍生的产物。比如Java语言的变量声明, *** 作符形式,参数传递,流程控制等方面和C语言,C++语言完全相同尽管如此,Java和C语言,C++语言又有许多差别,主要表现在如下几个方面:
(1) Java中对内存的分配是动态的,它采用面向对象的机制,采用运算符new为每个对象分配内存空间,而且,实际内存还会随程序运行情况而改变。程序运行中 Java系统自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源得到更充分地利用按照这种机制,程序员不必关注内存管理问题,这使Java程序的编写变得简单明了,并且避免了由于内存管理方面的差错而导致系统出问题。而C语言通过malloc()和free()这两个库函数来分别实现分配内存和释放内存空间的,C++语言中则通过运算符new和delete来分配和释放内存。在C和C++这种机制中,程序员必须非常仔细地处理内存的使用问题。一方面,如果对己释放的内存再作释放或者对未曾分配的内存作释放,都会造成死机;而另一方面,如果对长期不用的或不再使用的内存不释放,则会浪费系统资源,甚至因此造成资源枯竭。
(2) Java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变量来完成全局变量的功能。 (3) Java不用goto语句,而是用try-catch-finally异常处理语句来代替goto语句处理出错的功能。 (4) Java不支持头文件,而C和C++语言中都用头文件来定义类的原型,全局变量,库函数等,这种采用头文件的结构使得系统的运行维护相当繁杂。
(5) Java不支持宏定义,而是使用关键字final来定义常量,在C++中则采用宏定义来实现常量定义,这不利于程序的可读性。
(6) Java对每种数据类型都分配固定长度。比如,在Java中,int类型总是32位的,而在C和C++中,对于不同的平台,同一个数据类型分配不同的字节数,同样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位这使得C语言造成不可移植性,而Java则具有跨平台性(平台无关性)。
(7) 类型转换不同。在C和C++中,可通过指针进行任意的类型转换,常常带来不安全性,而在Java中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。
(8) 结构和联合的处理。在C和C++中,结构和联合的所有成员均为公有,这就带来了安全性问题,而在Java中根本就不包含结构和联合,所有的内容都封装在类里面。
(9) Java不再使用指针。指针是C和C++中最灵活,也最容易产生错误的数据类型由指针所进行的内存地址 *** 作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性。而Java对指针进行完全地控制,程序员不能直接进行任何指针 *** 作。
(10)避免平台依赖。Java语言编写的类库可以在其它平台的Java应用程序中使用,而不像C++语言必须依赖于Windows平台。
(11)在B/S开发方面,Java要远远优于C++。 自从sun被甲骨文收购以后,Java的发展前景就变得扑朔迷离起来,很多程序开发者都感到很迷惑。2010年4月9日,被称为Java之父的JamesGosling又在个人博客上宣布离开Oracle,这一事件更为Java的前景增加了一层迷雾。但是在进入5月份之后,一切开始变得明朗起来。 首先是Oracle在Java的后续支持方面,宣布了一系列关于Java的相关计划。然后是Java之父JamesGosling继声明Java不会死去之后又盛赞Oracle对Java所做的贡献。在Oracle的活动发布网站上,连续发布了多个关于Java的推广活动。
版本简介
2010年5月12日,Oracle主要产品负责人DaveHofert将大谈对JavaSE商业应用的改进和革新。根据宣传资料,在这次演讲中,DaveHofert将提到以下问题:
商业版与社区版本之间平台支持的差异。
如何获得专家帮助,以帮助企业增强其Java应用。
对于旧版本的安全修补问题。
可使用的发布工具和更新。
2010年6月18、19、20、27日,将分别在赫尔辛基、斯图加特、布达佩斯、伦敦举行Oracle、Sun专家与用户见面会,在见面会上与用户一起探讨Java的发展路线。主要讨论的问题包括Oracle将如何继续投资和改进Java技术,并且还会向用户通报JavaSE、JavaME专家团队的最新消息、JavaFX和JDK7最新的消息,以及OracleBerkeley DB的相关信息。
2010年5月3日,已经离开Oracle近一个月的Java之父JamesGosling在他的博客上表达了对NetBeans 69 和 FX13发布的关心。这两个项目最新版本的发布,可以证明Oracle已经开始兑现当初的承诺。JamesGosling在其早期的博客中,也透露了不会放弃Java事业,只是需要解决一些与Oracle之间的法律问题。
这一切迹象表明,Oracle绝对不会轻易放弃Java这块巨大的蛋糕,并且Oracle也开始逐渐学会了对开源社区的尊重。首先在JDK的商业版本方面,Oracle将会继续深入挖掘Java的商业利益,与其固有产品进行更深入的整合。在社区版本方面,Oracle将与Java开发者一起探讨和研发Java的技术。这里需要特别提到的一个产品是OracleBerkeleyDB,该产品是Oracle一直支持的一个开源非关系数据库产品,在NOSQL大行其道的今天,如果Oracle能够将BerkeleyDB与Java进行深入整合,将会为Java带来更多的活力和生命。从JamesGosling的表现来看,他似乎与Oracle之间已经达成某种谅解,并且有进一步合作的可能性。
java发展
Java在日新月异的IT技术领域内不算年轻,在过去的十几年中,Java曾凭借开放和跨平台等特性、借助互联网蓬勃发展的东风,改变了C/C++称霸天下的局面,形成Java、C、C++三足鼎立的格局。特别是Java在编程语言排名榜上独占鳌头长达10年之久,并帮助Sun奠定了其在IT技术和开源领域的地位,都说明Java在开发领域中的重要性。
在未来发展方向上,Java在Web、移动设备以及云计算方面前景非常广阔。虽然面对来自网络的类似于Ruby on Rails这样编程平台的挑战,Java依然还是事实上的企业Web开发标准。在Java对新开发者吸引力方面,这么多年以来,Java一直都在面对那些不成熟的,基于脚本的程序语言的挑战。比如PHP和Ruby,虽然经过多年努力,但是并没有看到他们相具有比Java更强的竞争力。另一方面,随着云计算以及移动领域的扩张,更多的企业在考虑将其应用部署在Java平台上,无论是本地主机,公共云,Java都是目前最合适的选择。
事实上Java技术的开放性、安全性和庞大的社会已有资源,以及其跨平台性,即“编写一次,到处运行”的特点,也使Java技术成为智能手机软件平台的事实标准。采用Java技术后,编写应用程序和提供服务的人就不必关心接受其服务的手机采用的是什么 *** 作系统和芯片,只要按照Java的要求去写程序就好了;同样,生产手机的厂商也不必顾虑将来谁来提供增值服务。同时在Oracle的技术投资担保下,Java也将是企业在云应用方面回避微软平台、在移动应用方面回避苹果公司的一个最佳选择。比如VMware就宣布了一个称为VMforce的服务,该服务将在云计算机中布置Java应用,Google应用引擎也将一如既往的支持Java。他们都是微软提供的,基于Net和开源PHP语言基础上的Azure云平台的竞争对手。此外,进军传统的桌面应用仍是Java未来一个努力的方向之一。
JAVA作为主流的商业应用的语言在3G、物联网时代下焕发出新的生机!
在互联网时代,JAVA语言已经是使用最广泛的服务器端语言。随着3G、互联网时代的到来,JAVA语言并不会“过时”,相反,JAVA语言会在新的业务领域有着更辉煌的发展前景。
3G、互联网的发展不仅仅带动了“智能手机制造业”、“电信运营业”、“RFID产业”、“嵌入式设备”等硬件或系统软件行业的发展;更重要的是:3G、互联网开创了更多、更新的商业领域应用,而这些领域的核心编程语言仍然是JAVA!
在TTS40 课程体系中的基于智能手机平台的“航空公司移动服务门户”项目和基于全球定位、实时订单跟踪、RFID仓储管理等诸多互联网新技术的“新一代物流管理系统”都是这些新商业应用领域的典型代表。
未来趋势
对Java来说,2010年是不平凡的一年,从Oracle在年初完成对Sun的收购,使大家对Java的未来充满了关注,而12月份在北京进行的JavaOne大会,可以说是Oracle在收购Sun之后的第一次正式大会,大家可以从 JavaOne上更多了解了Java未来的发展。而2011年,将成为Java新的开始。
Java走过了它15年的历程,在日新月异的IT技术领域不算年轻,但它一直没有停下变革、创新的脚步。Java已经不单单是一种计算机语言,很多情况下,我们称它是一个平台,一个社区。下面从Java SE、Java EE、Java ME、JavaFX几个方面,展望Java技术在2011年的发展。
Java SE
从Oracle公布的Java未来战略我们可以看到,Oracle目标是加强和继续扩大Java在新领域的应用,并将Java平台纳入新的部署架构,加大对 Java社区的投资,允许社区更多地参与。开发人员比较关注的Java SE 7将会在2011年夏天就绪,其中JCP已经批准了JSR 334、JSR 335、JSR 336和JSR 337等,支持改进Java语言和API规范,比如switch in string、multi-catch、泛型实例创建中的precise rethrow、Lambda表达式(闭包)等。而Java SE 8也将在SE 7发布之后的一年到一年半的时间就绪。
模块化的VM:可以将VM拆分成小块由应用程序使用,并按需推向Internet,这样的结果是Java应用程序的启动时间更短了,当VM不在目标机器上时,下载的时间也更短了。
额外的语言支持:Java平台支持用不同语言编写的应用程序,未来将会添加更多的语言支持,当然也包括对动态语言的支持,这就是所谓的达芬奇机或多语言虚拟机,请参考JSR-292。
增强的多核支持:需要借助工具、库和内置设施帮助新的和现有的Java应用程序更有效地利用多核硬件的优势,Java的线程模型可以轻松地创建并行执行任务的线程,但你如何将一个单一的任务拆分成多片进行并行执行呢
其它改进包括持续的性能改进,以及许多语言方面的增强,包括增加的闭包,在switch语句中对Strings的支持,以及多块异常捕获,闭包是一个有争议的功能,它是通过使用匿名的Java内部类实现的。
Java EE
Oracle长期以来一直都是Java的支持者,也是最大的JCP成员之一,10多年前就开始参与Java EE规范的编制,因此对Oracle成为Java中间件市场的大鳄不应该感到意外。
Java EE展望
模块化,开发标准:Java EE 6通过配置文件(Profile)定义实现了模块化Java EE,允许厂商根据特定需求创建更小的Java EE堆栈子集,解决成本和Java EE使用复杂问题。通过模块化设计和定义标准,有助于简化Java EE,让它的应用领域更广泛。
Java EE 6规定了两种配置文件:Web配置文件(Servlet,JSP和JSF)和Java EE企业配置文件。显然还可以定义更多的配置文件种类,例如,为支持会话初始化协议(SIP)定义电信服务器配置文件。
UI和RIA:HTML仍然是Java EE应用程序隐含的UI协议,通常有Java Servlet,JSP和JSF生成,考虑到生产的Web页面是静态的,可以使用Ajax技术,不过它已经超出了Java EE的范畴。
虽然Oracle没有明确这方面的具体计划,但未来Java EE和JavaFX集成时将会解决Ajax问题。
Java ME
作为 Oracle 首选的移动环境的 Java,这个堆栈未来默认的呈现方式将会是 HTML, CSS 和 Javascript。Java ME 将包含 WebKit 引擎,JavaScript 引擎,和 Java/JavaScript 桥,换言之,未来运行新版 Java ME 的手机,将能够访问浏览器以外的 Web 服务,而不会有任何性能问题。这些引擎将直接插入 Java ME虚拟机和插入 Java FX。
Oracle 的 Java ME 引擎,将利用当代图形硬件加速所擅长的(60 frames/秒)二维和三维渲染(在 Windows 环境下,微软的 Direct X,还有 OpenGL 或未来“更好”的技术)。 Java ME 将会针对 ARM7 和 ARM9芯片组进行优化,包括 Broadcom,三星,NEC,德州仪器,以及其他取得授权的手机部件制造商,还将内置充分利用手机装置的支付,通话,和定位等功能的 API。
JavaFX
随着 JavaFX 和 Java 的整合,并运行于 JVM 之上,它的富媒体处理及二维和三维渲染功能,也将能提供给任何在 JVM 上运行的其他编程语言,这意味着,例如 Groovy, Scala 和 JRuby 等也都能用来整合 JavaFX 的能力。
JavaFX展望:
基于可视化组件创建一个设计范式
为JavaFX应用程序创建一个丰富的UI扩展库
提升所有平台的JavaFX性能
增强跨设备移植JavaFX应用程序的能力
与Java,JavaScript和HTML 5无缝集成
支持新兴设备和UI范式(如多点触摸)
最近有些网友问我如何自学 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从何下手。我就以过来人的经历,写在这篇博客里,不一定都对,但都是我根据自己的经历总结出来的,供你们的参考。
Java 基础
Java 是一门纯粹的面向对象的编程语言,所以除了基础语法之外,必须得弄懂它的 oop 特性:封装、继承、多态。此外还有泛型、反射的特性,很多框架的技术都依赖它,比如 Spring 核心的 Ioc 和 AOP,都用到了反射,而且 Java 自身的动态代理也是利用反射实现的,这里我特意写了一篇 Java动态代理原理分析。此外还有 Java 一些标准库也是非常常见,比如集合、I/O、并发,几乎在 Web 开发中无处不在,也是面试经常会被问到的,所以在自学 Java 后端之前,不妨先打好这些基础,另外还有 Java8 的一些新特性,也要重点关注,比如 Lambda 表达式、集合的 Stream 流 *** 作、全新的 Date API 等等,关于新特性,我也写了几篇关于这方面的博客,请自行找吧,就不贴出来了。
关于书籍推荐,我是不建议初学者一开始就拿着「Java 编程思想」啃的,因为当初我就是那个当天下午决定自学 Java,晚上就抱着这本书啃的人,说实话,我当时真的不懂它在说啥,因为我没有一点的面向对象语言编程的基础,而这本书又写得太博大精深了,在当时的我来说,完全是天书,但是我认为它仍然是 Java 界的圣经,每读一次都有所收获。我在这里推荐你们一开始先看「Java 核心技术」,这本书讲得比较通俗易懂,初学者比较能接受。
关于视频推荐,我当初就是听某客的毕向东老师讲的 Java 基础教程,毕老师讲的实在是太生动有趣了,不知不觉把我带进 Java 的坑里无法自拔,有时候我会听他视频时笑出声来,也许是我那段自学阶段最有趣的时刻了。
数据库
关于 sql 方面:SQL 教程、MySQL 教程
我是了解了一些基础语法之后,就直接跟着视频的老师做一些表 *** 作实战练习了,比如单表查询、多表查询等。我建议学 sql 切勿眼高手低,需多加练习,不要只看懂了就行,因为工作中写得一手简练的 sql 是非常重要的。在这里我说下我在项目一直秉承着 sql 语句是能避免多表查询就避免多表查询,能够分开多条语句就分开多条语句,因为这里涉及到多表查询性能和数据库扩展的问题。
关于 JDBC 方面:JDBC 教程、 JDBC 获取连接对象源码分析
你需要弄懂 JDBC API 的用法,其实它只是一组规范接口,所有数据库驱动只要实现了 JDBC,那么我们就可以通过标准的 API 调用相应的驱动,完全不用知道驱动是怎么实现的,这就是面向接口编程的好处。而且对于 JDBC 我是直接看视频去理解的,跟着视频做了一个基于 Apache Dbutils 工具做了一个具有事务性的小工具,我特意用思维导图总结了一下:
Web 基础
曾经开源中国创始人红薯写了一篇文章「初学 Java Web 开发,请远离各种框架,从 Servlet 开发」,我觉得他说的太对了,在如今 Java 开发中,很多开发者只知道怎么使用框架,但根本不懂 Web 的一些知识点,其实框架很多,但都基本是一个套路,所以在你学习任何框架前,请把 Web 基础打好,把 Web 基础打好了,看框架真的是如鱼得水。
关于 >
关于 Web 基础这方面数据推荐,我当时是看的是「Tomcat 与 Java Web 开发技术详解」,很详细地讲解了整个 Java Web 开发的技术知识点,但现在看来,我觉得里面讲的有一些技术确实有点老旧了,不过可以了解一下 Java Web 开发的历史也是不错的。所以在 Web 基础这方面我都是看某客的崔老师讲的「超全面 Java Web 视频教程」,讲得很详细很生动,还有实战项目!
关于 JSP,你只要了解它其实就是一个 Servlet 就行了,关于它的一些标签用法,我认为可以直接忽略,因为现在互联网几乎没哪间公司还用 JSP,除了一些老旧的项目。现在都是流行前后端分离,单页应用,后端只做 API 接口的时代了,所以时间宝贵,把这些时间重点放在 Servlet 规范上面吧。
关于 Tomcat,它是一个 Web 容器,我们写的后端项目都要部署到Web容器才能运行,它其实是一个遵循 >
Web 主流框架
Java Web 框架多如牛毛,等你有一定经验了,你也可以写一个 Web 框架,网上很多说 Spring、Struts2、Hibernate 是 Java 三架马车,我只想说,那是很久远的事情了,我严重不推荐 Struts2、Hibernate,相信我,一开始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特别是 Spring 框架,其实 Spring 家族的框架都是很不错的。
但是提醒一点就是,千万不要沉迷于各种框架不能自拔,以会多种用法而沾沾自喜,导致知其然而不知其所以然。
Spring其核心思想就是 IOC 和 AOP:
谈谈对 Spring IOC 的理解
Spring 面向切面编程
SpringMVC 它的思想是全部请求统一用一个 Servlet 去做请求转发与控制,这个 Servlet 叫 DispatcherServlet:
SpringMVC 初始化过程
SpringMVC 处理请求过程
Mybatis 它可实现动态拼装 sql,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集:
mybatis 入门教程
Mybatis 深入浅出系列
Web 框架进阶
使用了 SSM 框架后,你会觉得框架也不过这么回事,如果你对 Spring 有过大概了解,你也会产生想写一个「山寨版」Spring 的心思了,一个轻量级 Web 框架主要具备以下功能:
可读取用户自定义配置文件,并以此来初始化框架;
具备 Bean 容器,管理项目的类的对象生命周期;
具备依赖注入,降低类之间的耦合性;
具备 AOP 功能,使项目可进行横向编程,可不改变原有代码的情况增加业务逻辑;
具备 MVC 框架模式。
其实除了 SSM 之外,Web 框架可谓是百家齐放,其中以 Spring 全家桶最为耀眼,在这里我极力推荐两个 Spring 家族框架:SpringBoot 和 SpringCloud。
SpringBoot 弥补了 Spring 配置上的缺点,再也不用为繁杂的 xml 费劲精力了,堪称是 Java 后端开发的颠覆者,推荐书籍「Java EE 开发的颠覆者:SpringBoot实战」
SpringBoot 构建 web 项目
SpringBoot 自动化配置源码分析
自定义 SpringBoot Starter
spring-boot-starter-tutorial
SpringCloud 是一个微服务架构,能够将项目按照业务分成一个个微服务,每个微服务都可独立部署,服务之间互相协调。当一个项目越来越大时,随之而来的是越来越难以维护,此时将项目拆分成若干个微服务、单独维护、单独部署,也可以降低项目不同业务间的耦合度。推荐书籍「Spring Cloud 与 Docker 微服务架构实战」,这本书将 Docker 与微服务完美地结合在一起,堪称完美!
Spring Cloud 中文官网
史上最简单的 Spring Cloud 教程
我写的有关于 Spring Cloud 的博客:
SpringCloud微服务架构之服务注册与发现
SpringCloud微服务架构之服务消费者
SpringCloud微服务架构之断路器
SpringCloud微服务架构之服务网关
其它技术
Redis:一个高性能的 key-value 数据库,当有并发量很高的请求时,将数据缓存在 Redis 中,将提高服务器的响应性能,大大减轻数据库的压力。
redis 中文官网
redis 教程
Git:世界上最先进的分布式版本控制系统,建议所有初学者从命令行开始使用 Git!关注 stormzhang 公众号「googdev」,回复「github」,即可免费获取一份 GitHub 教程电子书,我觉得写得很不错。
Git 官网
最全 Git 教程
Git 的一些常用命令
Maven:一个用于构建项目的工具,将项目间的依赖通过 xml 完美地组织到一起,可通过编译插件将项目编译成字节码文件。还有类似的 Gradle 也是不错的选择。
maven 的 pomxml 文件详解
Linux:至少要求常用的命令会用,能够在 linux 环境下部署项目。
Linux 命令大全
最全的 SSH 连接远程终端教程
Docker:简直是项目部署神器啊,来不及解释了,看我 Docker 系列博客,开启 Docker 之旅吧!推荐书籍「Docker 技术入门与实战」,中国首部 Docker 著作!
Docker 实战(一)
Docker 实战(二)
Docker 实战(三)
docker-deploy-tutorial
开发工具
工欲善其事,必先利其器,以下是我推荐的一些开发工具:
Intellij IDEA:Java 开发最好的 IDE,这个是公认的,我一开始是用 Eclipse 的,后来用了 Intellij IDEA,才发现 Eclipse 就是一坨屎,所以我以过来人劝你们不要使用 Eclipse,直接 Intellij IDEA!
IntelliJ IDEA 使用教程
Iterm2:macOS 最好用的终端!
Iterm2 使用指南
Chrome:人生苦短,请用 Chrome,来不及解释了,快上车!
Postman:很好用的一个接口调试工具。
java所需要的学习的知识点很多,可以大致分为以下几个阶段:一、预科学习:
HTML5:HTML5标签入bai门、HTML5表格、表单
CSS3:CSS3选择器和简单属性、CSS3定位和布局、CSS3复杂选择器和高级属性
数据库:mysql数据库安装和数据 *** 作、约束和简单查询、复杂查询、数据库设计、oracle的安装与数据 *** 作、oracle与mysql的对比学习
二、JavaSEJava语言基础、程序逻辑:环境配置和第一个语言程序-HelloWorld 变量运算符 条件和循环 方法和数组
Java面向对象:面向对象入门、面向对象应用_管理系统类
Java常用类、String相关、算法相关 面向对象深入(重载、this、static )继承(重写、super、初始化顺序)
多态(抽象类和接口、final、克隆和比较接口 设计模式、对象和类的生命周期)
API:异常、日志 集合 集合工具类和泛型 IO JDBC基础线程 网络编程 反射 NIO Junit
Java面向对象思想:设计模式 面向对象原则
Java底层理论:集合底层 性能监控工具 反编 JUC
三、Java webweb基础:TOMCAT/WEB程序结构/>
第三方工具包:连接池、事务、分页、文件上传下载、Dom4j/Log4j/Log back
JavaScript和jQuery框架技术:JS入门和DOM基础 、DOM模型深入 、jQ基础、 jQ *** 作
MVC动态Web开发技术:自定义MVC框架、DAO框架、前端框架(layUI)
Web开发高级运用:tomcat server服务器配置 、nginx使用、 jetty配置
网络编程:网络原理、>四、SSM框架
Spring框架、SpringMVC框架、MyBatis框架:mybatis入门、配置文件详解和动态sql的使用、
mybatis管理关系映射和延迟加载、 查询缓存和逆向工程 、Spring入门和集成、myBatis SpringMVC入门 、SSM集成、
Spring配置详解 、Spring AOP、 Spring事务配置 、SpringMVC高级功能 、SpringMVC原理
五、前沿技术高可用、高并发、高扩展:Spring Boot 、缓存 、分布式 、全文索引、 服务中间件、 myCat、 云服务 、人脸识别 、语言识别 、JVM底层+优化
在java的学习中,最重要的表示实践,任何一个大牛都是敲出来的,光有理论知识,没有实际动手能力也是不行的。
对java有兴趣的小伙伴们,不妨先从java入门开始!B站上有很多的java教学视频,从基础到高级的都有,还挺不错的,知识点讲的很细致,还有完整版的学习路线图。也可以自己去看看,下载学习试试。按顺序学这些:流程控制语句、类和对象、接口和抽象类、多态、封装、继承、数组、集合、IO编程、线程,再学JavaWeb,又习惯称Java企业级应用(JavaEE),JavaEE的基础是servlet,学好servlet之后,就去学jsp,jsp的实质就是servlet,再学学MVC概念,如果想做点简单的应用,用servlet和jsp就足够了!在学完servlet和jsp之后,去学习JavaEE提供的框架,spring(容器)、struts(控制action)、Ibatis和hibernate(这两个都是持久层框架,和数据库打交道的),这些学好之后,学oracle,mysql数据库,后面可以自学一些UI上的东西,如ext,
1、好好规划自己的路,不要跟着感觉走;
根据个人的理想来安排自己的生活,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,痛快一些,那么就需要慎重安排自己的的轨迹,从一个行业入手逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会以后,钱根本不是问题,频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手。
2、可以做技术的,切不可沉湎于技术;
千万不可一门心思钻营技术,给自己造成很多压力,如果你的心思全部放在上面那么注定你将成为孔乙己一类的人物,适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老,还是个工程师。
3、不要去做技术高手,只去做综合素质高手;
在企业里工作,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官,”这是普遍的、典型的工程师的迂腐之言,你想想,老板搞经营那么多年难道见识不如你这个新兵人家或许善于管理,善于领会老板意图,善于部门协调等等等,因此务必培养自己多方面的能力,包括,管理,亲和力,公关能力等要成为最综合素质的高手则前途无量,技术以外的技能才是更重要的本事,从古到今,一律如此。
4、多交“三教九流”的朋友;
不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理者,那么你整日面对的就是这些人。了解他们的经历,思维习惯,爱好,学习他处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费的成功的概率大大降低。
5、知识涉猎不仅要专,还一定要广;
多看看其他方面的书,金融,财会,进出口,税务,法律等等为以后做一些积累的以后的用处会更大,会少交许多的学费。
6、抓住时机向技术管理或市场销售方面转变;
要想有前途就不能一直搞开发,适当时候要转变为管理和或销售的前途会更大,以前搞技术也没有白搞,以后还用得着,搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉,应该说这才是前途的真正支柱。
7、逐渐客户自己的心理弱点和性格缺陷;
多疑,敏感,犹豫不决,胆怯,多虑,这些工程师普遍存在的性格弱点必须改变,很难吗,只在床上想一想当然不可能改变,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想,不克服这些缺点,一切不可能,甚至连项目经理都当不好,尽管你可能技术不错。
8、工作的同时要为以后做准备,建立自己的工作的环境;
及早为自己配置一个工作环境,装备电脑,模拟器,编程器等,业余时间可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是准备自己的产品,咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出像样的产品,就可以技术转让或与人合作搞企业,先把东西准备好,等待机会,否则,有了机会也抓不住。
9、要学会善于推销自己;
不仅要干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,要创造条件让别了解自己,不然老板怎么知道你能干,外面的投资人怎么相信你,提早把自己推销出去,机会自然会来找你,搞个个人主页是个好主意,特别是培养自己在行业的名气,有了名气,高薪机会自不在话下,更重要的是有合作的机会。
10、该出手时便出手。
永远不可能有百分之百把握,条件差不多就要大胆去干,去闯出自己的事业,不要犹豫,不要彷徨,干了不一定成功,但至少为下一次冲击积累了经验,不干永远没出息,而且要干成必然要经历失败,不经历风雨,怎能见彩虹。
人在自己的人生道路中走过总有迷茫,相信源码时代叭
以上就是关于Java软件工程师的发展路径全部的内容,包括:Java软件工程师的发展路径、Java工程师以后发展路径是什么、大家知道java程序员学习路线吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)