很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话,那阁下可真的要小心。因为干IT这一行竞争本来就比较激烈,特别是页面设计这方面,能够开发的人很多,所以为了节省成本在大部分公司都会在需要的时候才招聘这类人员,在没有订单的时候一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。而在招聘信息上常常会看到“招聘页面设计师,条件:30岁以下……欢迎应界毕业生前来应聘”这样一条,因为这一类工员对技术上的要求并不高,找应界生可以节约成本。所以在下觉得“IT行业是吃青春饭的”这句话只是对着以上这类人所说的,如果阁下缺乏“进取之心”,而只抱着“收入高,容易找工作”这样的态度而入行,那“IT行业是吃青春饭”将会应验了。
㈡ Java学习路线是怎样的
Java环境搭建、Java流程控制语句-for循环、switch选择判断、循环嵌套、数组拷贝、多维数组、final关键字、构造函数的调用、类的访问权限和路径、面向对象高级特性、Java异常处理、Set,Map,List接口及接口实现类、Java线程、同步阻塞、JavaIO流、文件的操作,复制,读写,删除等。
MySQL安装、管理、创建数据库、MySQLUPDATE
查询、Mysql高级操作、JDBC、JDBC数据库连接操作,JDBC动态Sql处理、Servlet3.0 网页重定向、Servlet3.0
新增的注解支持、AJAX、responseText属性详解等。
Struts2异常处理、Struts2+Log4j集成、Struts2和JSON实例、Hibernate5、Hibernate集合映射、Hibernate组件映射、Spring4.0、SpringAOP+
AspectJ框架、Spring 与其它Web框架集成、Spring Hibernate支持等。
SpringMVC、Spring MVC生成JSON数据、MyBatis、MyBatis 环境配置及入门、Mybatis set标签、Mybatis trim标签、Shiro、Shiro快速入门教程、Shiro Web应用等。
SpringBoot、全局异常处理、过滤器监听器、EHCache缓存、SpringBoot Quartz定时任务、Vue、Vue.js 安装、模板语法、计算属性、事件处理器、Vue.js 自定义指令、Vue.js 路由等
ActiveM环境搭建、生产者和消费者、消息持久化操作、RSA数字加密算法、Codebar条形码生成器、zxing二维码生成器、HighCharts统计图、Echarts统计图、网络播放器ckplayer、嵌入式网络播放器,可以浏览器和移动端随意使用
分布式服务框架的理解,Dubbo架构设计详解及其核心要点,框架运行原理分析、SpringData数据访问、Lucene搜索引擎、Lucene的全文搜索服务器介绍、索引建立方式、Solr海量数据搜索引擎、Socket网络通信、实现RMI远程对象通讯、使用JMS消息服务、Kafka分布式消息系统、WebService与RestfulWS等
Spring Security安全框架、实现Web应用安全控制、缓存应用与EhCache框架、OSCache与JBossCache框架、MyBatis与Hibernate缓存机制、NoSQL应用与SQL调优、MongoDB
NoSQL数据库、Redis内存数据库、实现RedisSession共享、SQL语句的优化、实现数据库读写分离、WEB应用集群及性能优化、Maven项目管理工具、Web服务器负载均衡、实现Nginx与Tomcat集群、使用LoadRunner测试工具、性能优化之内存调优、代码优化与重构的方法等。
㈢ Java 程序员的发展路线一般有哪些有什么建议
帮助困惑的年轻员工分析未来出路是我的工作的一部分。虽然自己也不乏困惑之处,但至少可以拿出培训过的知识来简单做下介绍。当然详细情况会因为公司的不同而有所不同,职位的名称也会有些差异。重在领会精神。 首先,作为程序员,如果想在技术道路上多走一走,只懂一门语言是远远不够的。所以,这里我就不局限于Java程序员,而是用泛指的程序员来进行说明。 程序员,首先最容易而且常常是自然过渡的下一个阶段就是——软件设计师,负责进行软件的详细设计以及概要设计。 在从事设计师工作的时候,多多少少都会接触到一些需求分析的工作以及技术实现方案可行性的判断工作。这里就会出现一个发展的岔路: 如果今后希望多从事需求分析相关工作,那么下一步会做IT顾问(在某些地方可能是产品经理),负责与客户进行磋商并挖掘客户的需求甚至是潜在需求。 做IT顾问的时候,常常会配合产品销售人员进行工作。如果对产品销售有兴趣,完全可以渐渐转型为销售人员。大多数企业的大部分利润都会分配到销售部门,那里是赚钱最多的地方,但也是赚钱最难的地方。产品销售人员的待遇常常与绩效挂钩,所以即便从事同样的工作,差距会很大。相对来说,后方的IT人员之间的差异会小些,收入会少些,承担的风险也小些。 销售人员的工作如果能做到明星级,有时就可能直接被高层看重,一步登天进入公司的决策层甚至成为公司的核心人物。进而在后期成为CxO(x ∈ [I, E, F, T, ...])级别的人物执掌公司的生杀大权。再发展下去……跟乔布斯那样,可以得个癌症死一下。永远成为一个传奇。 现在回到设计师遇到的分支的另一条线——技术实现的可行性判断。如果对这一脉感兴趣,基本是希望走技术路线,那么仍然有两个分支—— 一个是技术专家路线:对某一方面的技术极其熟识,只要进入这个领域,无所不知无所不晓(一定程度上)。比如Java领域,上到Java EE框架的各种应用方法,下到内存分配的详细机理,都了如指掌。也就是说,当架构师说,这次的软件要基于Java实现的时候,剩下的一切问题你都可以去摆平。 技术专家做到高处不胜寒的程度,就可以成为一个计算机科学家了。如果是在例如IBM、微软、Google等这样具有自己研究部门的公司,下一步就是进入公司的研究部门,成为计算机科学家,去做一些人类文明史上尚无先例的工作,开创一个时代。顺便得一两个诺贝尔奖什么的,把奖牌扔家里给孩子当玩具。再发展下去……百年之后,跟那个被苹果砸了脑袋的大鼻子以及那个头发乱蓬蓬的老头一样,教科书上出现你的名字,各个学校的墙上挂出你的照片。 刚才说技术路线有两个分支,另一个则是架构师。真正的架构师并不是如很多人想象的那样是技术大牛。相反,可能反而是某个行业的业务大牛。因为架构师是将物理世界转化为数字世界魔术师。其实架构师内部也分不同级别和不同倾向性,总体来说架构师都是要在项目的技术方面做决策的。来决定哪种技术、硬件、框架等最适合客户的需求和当时的实际情况。我一直觉得这些抉择真的是挺难的。在程序员阶段遇到的最常见的接近架构师工作的抉择,常常就是实现一个算法,到底是应该存储一些缓冲内容来牺牲存储空间赚速度还是牺牲速度性能来节省空间。 架构师做厉害了,有几个选择——一个是因为很了解业务,直接转到相关业务的公司,做那边的CTO等职位。比如电信行业的架构师,直接跑到电信公司做技术方案的大总管。另一个就是仍旧留在IT行业,做资深顾问,然后回到最初的那个分支——做销售、做领导、做CxO、得个癌症成为传奇…… 另外,与上面各个分支平行的一条线。无论你做什么事情,在公司里都会被组织成项目。这时候就需要项目管理人员。如果你对统括大局,承担责任有兴趣,可以走这条线。从程序员直接或者在上面分支中的任何阶段转为项目经理。一个项目好了,最风光的是项目经理;一个项目烂了,最倒霉的也是项目经理。项目经理就是把项目里的各个大牛安排妥当,让整个项目成功。 项目经理做好了,就可能进入公司决策层,回到第一条线,做CxO、得个癌症成为传奇…… 再另外,还有一条与上面都平行的线。有些公司会把工作绩效好,并懂得关心他人的人提升为人事经理。从而走上关怀员工、面试招人的道路。(我现在是掉到这个坑里的同时在兼顾架构师方向。)做好了,会进入公司决策层,做CxO、得个癌症成为传奇…… 我现在能想到的就是这些。选择还是不少的,前途还是光明的。只是要多小心癌症。 最后,祝你成功!
㈣ 从java初级程序员走到CTO的成长路径是什么样的
从一个初级程序员晋升到CTO,首先你要吃透自己主要语言(java),同时在去熟悉其他比较主流的语言,当你技术达到一定等次了,就可以去挑战试试了,但是过程中没有任何捷径可走。加油吧!
㈤ Java软件工程师的发展路径
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 6.9 和 FX1.3发布的关心。这两个项目最新版本的发布,可以证明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!
在TTS4.0 课程体系中的基于智能手机平台的“航空公司移动服务门户”项目和基于全球定位、实时订单跟踪、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 基础
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 基础打好了,看框架真的是如鱼得水。
关于 Http 协议,这篇文章就写得很清楚:Http协议
关于 Web 基础这方面数据推荐,我当时是看的是“Tomcat 与 Java Web 开发技术详解”,很详细地讲解了整个 Java Web 开发的技术知识点,但现在看来,我觉得里面讲的有一些技术确实有点老旧了,不过可以了解一下 Java Web 开发的历史也是不错的。所以在 Web 基础这方面我都是看某客的崔老师讲的“超全面 Java Web 视频教程”,讲得很详细很生动,还有实战项目!
关于 JSP,你只要了解它其实就是一个 Servlet 就行了,关于它的一些标签用法,我认为可以直接忽略,因为现在互联网几乎没哪间公司还用 JSP,除了一些老旧的项目。现在都是流行前后端分离,单页应用,后端只做 API 接口的时代了,所以时间宝贵,把这些时间重点放在 Servlet 规范上面吧。
关于 Tomcat,它是一个 Web 容器,我们写的后端项目都要部署到Web容器才能运行,它其实是一个遵循 Http,通过 Socket 通信与客户端进行交互的服务端程序:Tomcat结构及处理请求过程
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 的 pom.xml 文件详解
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程序员的道路该怎么走
你能把servlet+jsp+javabean+tag搞得很精通,
理解MVC原理
玩转主流设计模式,工厂模式,单例模式,装饰模式...
能结合模式理解java类库
理解java的反射机制,动态代理,IO流,文件流,多线程,玩转集合类
就不错了,到哪里都不愁找不到工作。什么SSH框架不过是这些东西的包装罢了,你自己都可以写一个出来。
㈧ 浅谈如何找到Java 正确的学习路径
Java语言是较为热门的计算机编程语言,直观地讲,Java语言在所有编程语言当中难度不是最大的,但用途却很广泛。从Android开发、网站服务器编程到如今的物联网嵌入式程序和大数据运算分析,都可以看到Java的身影。Java是一门面向对象的编程语言,同时也是计算机、互联网应用最为广泛的生态。它对C++语言语法方面进行了改进,能够具有跨平台、可移植、安全、健壮等特点,能够用更加贴近人们的日常思维方式进行较为复杂的编程,可以说是最实用的静态编程语言。
在大型数据库Oracle的应用上,Java可作为二次开发的语言进行开发设计;在分布式大数据分析架构中,Java也可以用来写大数据的算法程序;同时Java还有很多其他的应用,比如智能电视以及其他智能穿戴设备的编程。
对于热爱编程的朋友来说,Java是一门值得学习的语言,那么Java的学习线路图是怎样的?首先先要从了解Java各个版本的含义开始:
JavaSE(Java Standard Edition):标准版,定位于个人计算机上的应用。这个版本是Java平台的核心,它提供了非常丰富的API来开发一般个人计算机上的应用程序,包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在上世纪90年代末互联网上大放异彩的Applet也属于这个版本;
JavaEE(Java Enterprise Edition):企业版,定位在服务器端的应用。JavaEE是JavaSE的扩展,增加了用于服务器开发的类库。如:JDBC是让程序员能直接在Java内使用的SQL的语法来访问数据库内的数据;Servlet能够延伸服务器的功能,通过请求—响应的模式来处理客户端的请求;JSP是一种可以将Java程序代码内嵌在网页内的技术;
JavaME(Java Micro Edition):微型版,定位在消费性电子产品的应用上,JavaME是JavaSE的内伸,包含J2SE的一部分核心类,也有自己的扩展类,该版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。
在了解Java各个版本的定义之后,就可以按照一定的学习路线开始Java之旅了。
JavaSE部分:
新手最初学习的时候先要从JavaSE开始学起,所包含的内容主要分为:面向对象概念的理解、Java基本语法的学习,Java桌面图形界面应用程序的开发,掌握常用的Java API等(关键是要学会怎样查阅)。
重点:Java基本语法(循环结构,数据类型,数组,运算符等)、Swing,awt,事件机制、文件输入输出流处理等;
难点:面向对象思想的理解(接口、类等)、线程、socket网络编程等。
JavaEE部分:
在学习了JavaSE之后,你可以尝试着慢慢过渡到JavaEE。当然,学习JavaEE也需要很多其他技术的支撑,比如数据库技术,网页编程技术等等。JavaEE有三个必学的框架,如果你说你学了JavaEE,但又不会这三个框架的话,是不应该的,这三个框架分别是Struts、Spring和Hibernate,虽然这三个框架应用很广,但不代表这三个框架就代表了JavaEE,JavaEE还有很多其他的东西,比如EJB,作为一款重量级框架,虽然这个应用慢慢的再被其他框架所取代,但EJB3.0的出现也给它带回一些生机。尚学堂陈老师提到,当前JavaEE流行的框架是SSM框架,即Spring、SpringMVC、MyBatis三个开源框架,他是对之前SSH框架的改进。
不过前面介绍到得这些都不是JavaEE的基础,是属于框架应用级别的.要真正把上面说到的知识掌握好,还是的学习JavaEE最核心的东西:JDBC、JSP、servlet和JavaBean,后面三个也是学习SSH的基础(StrutsSpringHibernate的简称)。鉴于JavaEE的内容太过复杂,建议大家最初只学习: JSP,servlet和JavaBean,等这个基础掌握好再把SSH学习了,再对其他JavaEE技术有个大致的了解就可以出去找工作了。当然,找工作的前提除了把Java学习好,还会有一些其他的技术也是必须要掌握的。
还有比较重要的内容是数据库技术:
数据库几乎是程序中不可或缺的一部分,在整个软件开发中更是占据了重要作用。数据库在整个软件中扮演的是地基的角色,你要修房子,就要先打好地基,你要做软件,就要先设计好的数据库。目前数据库几乎都是关系型数据库,代表的有:SQL Server/MySQL等。
综上所述,Java的学习路线也并不难,把基本的Java语法融会贯通,能够在实际项目中熟练应用框架,并能够对数据库进行增删改查等操作,随着开发经验的增长,技术也会不断地提升。
㈨ Java程序员如何加快升级之路
能把客户需要的功能搞出来就算是高手啦,什么代码规不规范、数据库设计的合理不合理,都得服从功能。把功能搞得让用户满意,系统使用起来方便顺手,符合用户日常工作习惯,那就是好程序员。你的代码再简洁再规范,对用户都关系不大,你虽然节约了服务器资源,程序运行效率较高,但是用户基本感觉不到。如果功能做不到位,为用户着想的不够,用户是完全有感受的,比如多字段录入问题,用户的习惯和期望是每输入完成一个字段后回车焦点就转到下一个文本框,但是不少程序员开发的管理系统都没做到这点,而是输完一个字段后必须右手离开键盘去操做鼠标,用鼠标把光标切换到下一个文本框,这种程序代码既使再规范又能怎么样?还有就是一些程序员喜欢画蛇添足,原本很简单的需求,编程时却把功能搞得很啰嗦,比如注册、登录问题,要这个要那个的,把用户搞得很烦。
㈩ java程序员的成长路线是什么是不是我图片上这样的一个顺序
看图说话。
1、个人觉得,你列出的诸如JSP,CSS,STRUTS等技术只是从小到大,从近到远,应用范围的进阶而已。
2、然而程序员的进阶,我觉得往往是其对某一方面专精的程度,而不是学到的广度。诸如底层驱动工程师,JAVA应用工程师,数据库工程师等等。
3、工作时,各个团队有专精的任务,个人也只担任很少的部分。所以我觉得要有针对性的寻找适合自己的位置。
最后,建议找到自己最感兴趣的那块,专精于此,祝你成功!