技术不同,简单的可以理解为:初级中级的只关注代码,编程。高级的就要考虑系统的架构,整体框架。
具体区别如下:
一、初级工程师
1、首先要学习java的基础知识。不要被新技术迷惑,所谓万变不离其宗,新技术都是基于java的基础之上,如果基础不扎实,对于这些新技术的理解也是一知半解,学不到根源。
2、做一个java项目在学习完java的基础知识之后,做一个java项目来巩固一下,在项目中会发现很多问题,通过解决问题,加深基础知识的掌握。
3、学习数据库的基础知识和开发应用软件开发离不了数据库,掌握几种流行的数据库:oracle、sql、server、mysql等。
4、jee基础在这里首先要学习网站基础,包括html、dhtml、javascript;接着要学习xml,xml jaxp;然后学习jee基础,包括jee开发环境,rmi/iiop、jndi;最后学习jdbc数据库的应用开发。
5、web开发全面的jee的web开发知识:servlet jsp javabean taglib,到这里做一个完整的web应用项目开发。
6、ejb开发包含全面的ejb知识:1)ejb入门和无状态会话bean;2)有状态会话bean;3)bmp和cmp是实体bean;4)jms和messagedrivenbean;5)事物和安全(jta、jts和jaas);6)webservice的开发和应用。
7、开源框架的学习学习几种现在流行的开源框架:struts、spring、hibernian、webwork等。完整的学习这些框架的开发和应用。如果有兴趣还可以学习ibati框架、ajax技术和dwr框架的开发和应用。
8、jee项目综合应用jee的知识来开发一个完整的应用。
9、面向对象分析与设计java是一种面向对象的语言,所以要深入学习面向对象的分析与设计,另外还要学习uml统一建模语言。
10、接下来就是系统设计与架构这里要学习的是java设计模式、ejb设计模式、jee核心设计模式、jee应用程序框架设计。
11、软件工程软件工程基本理论知识的学习,还有rup和极限编程。
12、技术研究学习搜索引擎技术:如lucene等、工作流技术:包含shark、jbpm等、soa架构和应用。
13、综合项目实战实现一个企业级的应用。每个阶段在做项目的基础上牢固的掌握应用到的知识,只有在实际的应用中发现问题,加深所学的知识。
二、中级工程师
1、对于java基础技术体系(包括jvm、类装载机制、多线程并发、io、网络)有一定的掌握和应用经验。
掌握jvm内存分配、jvm垃圾回收;类装载机制; 性能优化; 反射机制;多线程;io/nio; 网络编程;常用数据结构和相关算法。
2、对面向对象的软件开发思想有清晰的认识、熟悉掌握常用的设计模式;设计模式;单例模式;工厂模式;代理模式;模板方法模式;责任链模式等。
3、熟练掌握目前流行开源框架(spring/springmvc/ibatis),并且对其核心思想、实现原理有一定认知;开源框架:spring;hibernate。
4、熟悉oracle、mysql等数据库开发与设计以及缓存系统redis或 memcached的设计和研发;关系数据库:oracle;postgresql 缓存系统:redis(nosql)缓存系统:memcached。
5、熟悉底层中间件、分布式技术(包括缓存、消息系统、热部署、jmx等)、底层中间件:应用服务器:jetty(tomcat)、 消息中间件:activemq、rabbitmq、事务处理中间件:数据访问中间件:odbc、工作流中间件:jbpm,分布式技术:缓存系统、消息系统、restful、热部署、jmx。
6、至少一种java 应用服务器如tomcat、jetty。
7、精通shell编程,熟练应用awk、sed、grep、strace、tcudump、gdb等常用命令。
8、有大型分布式、高并发、高负载(大数据量)、高可用性系统设计开发经验,分布式:(多节点部署)、高并发、高负载(大数据量)、高稳定、高可用。
9、对配置管理和敏捷研发模式有所了解,配置管理工具:svn、github。
10、业务能力:系统升级、双机、部署、容灾、备份恢复、dfx。
11、加分技术:脚本语言:python,远程调用,精通internet基本协议(如tcp/ip、http等)内容及相关应用。有一定安全意识并了解常见的安全问题解决方案。熟悉常见的一些解决方案及其原理:单点登录、分布式缓存、soa、全文检索、消息中间件,负载均衡、连接池、nosql、流计算等。
三、高级工程师
1、java。要想成为java(高级)工程师肯定要学习java。一般的程序员或许只需知道一些java的语法结构就可以应付了。但要成为java(高级)工程师,您要对java做比较深入的研究。您应该多研究一下jdbc、io包、util包、text包、jms、ejb、rmi、线程。如果可能,希望您对java的所有包都浏览一下,知道大概的api,这样您就发现其实您想实现的很多功能,通过java的api都可以实现了,就不必自己费太多的脑经了。
2、设计模式。其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代码往往要借助一些设计模式。当然长期的代码经验积累,只要您用心,会使您形成自己代码风格。相信您的代码也比较符合代码的可重用性,可维护性,可扩展性。但既然前人已经给我们总结出了经验,我们何不踩着前人的肩膀前进?3、xml。现在的系统中不使用xml几乎是不可能的。xml的功能非常强大,它可以做数据转换、做系统的配置、甚至可保存您的系统业务数据。因此您必须了解xml,包括它的语法,结构。您还需要比较熟练的使用解析xml的一些api,比如jdom,sax等,因为在我们一般的项目中,xml往往担当系统配置信息的作用,您需要用这些api解析这些配置信息,开发完美的项目。4、精通使用一种或两种框架。“框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开发使你可以省出很多的开发成本”。但我这里希望您能精通,更多的是希望您能通过框架的使用了解框架的思想。这样您在开发一个项目时思路会开阔一些,比如您会想到把sql语句与您的java代码分开,再比如您会考虑把您的业务逻辑配置到xml或者数据库中,这样整个项目就很容易扩张了。
5、熟悉主流数据库。其实真正比较大的项目都是有人专门做数据库的,但往往很多项目要求作为(高级)工程师的您也参与数据库的设计以及sql的编写。所以为了更好的为国家做贡献,建议您还是多了解一些主流数据库,比如sqlserver,oracle,多连接sql和存储过程以及触发器。如果您不是“科班”出身,您还需要补充一些数据库原理方面的知识。
6、精通一种或两种webserver。我还是要强调您要精通一种或两种。因为作为java工程师,特别时想成为高级java工程师的您,您不可避免地要部署您的项目到webserver上,而且只有当您精通一种webserver,您才可能最大限度地使用它的资源,这往往可以节省很多时间和精力。
7、uml。我知道您肯定想成为高级工程师,因此您有必要了解或熟练或精通uml,这取决于您有多大决心想成为高级工程师和项目经理。在比较正规的开发团队中,uml是讨论项目的交流工具,您要想做一个软件工程师,您至少要能看懂,您要想做高级工程师,您要能通过它来描述您对项目的理解,尽管这不是必须,但却很重要。
8、站在高度分析问题:这不是一个知识点,也不是通过书本就能学得到的。只所以提到这一点,是因为我比您还着急,我希望您更快的成为一个高级的软件工程师,而不是一个一般的软件工程师。希望您在工作中多向您的系统分析员、需求分析员、系统设计员学习,多站在他们角度上去看您在开发的项目。在最好在项目之初先在您的脑海里对项目有个大致的分析、设计,然后和他们进行比较,找找差别,想想缺点。
9、工具。您在这个阶段可能接触到不同的工具了,尽管您还需要使用jb或者idea,但能可能对rose,together要多了解一些,因为您要画uml了。不要再对dreamweaver等html编辑器情有独钟了,那些jsp页面让初级程序员去写吧。
Qorvo® 推出首款单个模块即可支持5.1至7.1GHz频段的FEM,从而简化Wi-Fi 6E系统设计
加热式雨量计怎么供电?
NSA后斯诺登时代699项安全缺陷修复率不足三成
扬杰科技针对工业变频器等领域,推出IGBT变频器系列模块新品
什么是激光雷达?目前面临哪些挑战?
Java软件开发工程师的等级区别
云组态平台与西门子PLC进行Modbus通信解决方案
倾角传感器在桥梁上的应用
苹果发布Sir智能音箱,可惜亚马逊谷歌已经走在它前面了
高通骁龙835这锅我不背,一加5/Z17都现货,为啥只有小米6需要抢
破坏性创新,探讨特斯拉的四个新角度
柔性印制电路的制造
集成运算放大器的应用电路(4)
节能+智慧,以太网供电(PoE)技术
中兴通讯承建台湾地区威宝TD试验网
注视点渲染可能会用于减少VR头显的计算负荷
华为Mate10大曝光:卖点太多,配置、定价死磕iPhone8
什么是CCU (Communication Control
FlashAir无线SD存储卡升级,包括了众多用户建议的新增功能
电源术语和定义