发布网友 发布时间:2022-04-23 04:12
共4个回答
热心网友 时间:2022-04-28 02:40
如果要谈精通Java ,有一个特别直接的方法,那就是考察工程师是否具有:
“快速构建开发框架的能力”。
例如下面这个系统:
这是一个典型的web应用(基于Java)。虽然就整个系统搭建来说,是架构师的责任。但其中的深色部分,是一个典型Java应用框架。以此为标准,框架的搭建能力,可以用来考察软件工程师是否真的精通Java。
在一些新项目中,项目经理和架构师会根据业务需求从顶层设计架构。待架构稳定后,会进入实际的编码阶段。但在更大规模的业务编码前,首先要搭建好系统的基本框架,而这个框架一般会交给团队中最资深的工程师(当然精通Java)去做。
具体框架的搭建时间一定不能太长,因为整个开发团队都在等待。
同时,因为这个框架是长期开发的基础,所以质量一定要有保障。
搭建框架的技术指标,一句话:又快又好。
搭建这样的框架,以我的经验,团队能接受的时间一般是2周,最多不能超过3周。
这个框架如果由一个初级工程师来搭建,因为缺少长期的积累,必然需要大量的时间。但除了时间,更糟糕的是质量。
因为一个好的框架绝不是靠脑子凭空想出来的,更应该实践磨练出来的。而初级工程师因为缺少实践锤炼,踩过的坑不多,吃过的亏少。纵然理论再丰富,天资再聪颖,也无法在沙地上凭空打出扎实的地基。
而且,实践中,即使有很多工程师有丰富的实践经验,但也不意味随着时间推进,老工程师就天然具备搭建高质量框架的能力。因为实践背后,更需要深刻的洞察力,和笔耕不辍的总结。
现实中,一个大型的项目,代码量必然是巨大的。即使是当初设计再精细,但随着开发的不断推进,*的引入是无法避免的,其中一个显著特征就是模块之间的耦合不断增加。
用一个比喻来形容,随着时间发展,整个软件系统就像人体一样,血肉筋骨都粘合在了一块。对软件工程师来说,要从这样的系统中提取出凝练的框架,就像对一个高水平的外科医生要求的那样。在理论上要保持绝对的精通,就像医生对解刨学的掌握。同时还有有极强的编码能力,就像医生握手术刀的灵巧双手一样。用一句话来形容一流的Java工程师(医生也是这样),那就是:“鹰眼、狮心,女人手”。
但是,软件工程师和医生还有一点不同,那就是对速度的追求。因为搭建框架的工作是整个团队开发工作的前置阶段。
而要提高框架搭建的速度,除了日常多思考,多总结,更要做到“未雨绸缪”,提前布局。
以我为例,日常的开发中,对每个经手的大型项目。除了通过不断的重构,来保持整个框架的清晰外,我还会尝试把每个系统中的框架单独剥离出来。这样的做法,除了避免框架被污染的同时,也不断丰富了属于我个人的“架构模式”库。
这样的做法,一则在面临新项目时,极大的提高了项目的推进速度。另一方面,也极大的提高了个人的技术自信度,以及职业安全感。
热心网友 时间:2022-04-28 03:58
在知乎上看到一个回答,如下:前两年,我哥们儿在微博上关注了一个Java大神,这位大神神到什么地步呢?没事的时候这位大神就研究JVM,然后给JVM找Bug,找到Bug后就写信给Oracle。故事的结局很明显啦,这位大神被Oracle挖走去做JVM开发完善的相关工作了。自己离这个程度差十万八千里,现在正在黑马程序员培训,现在最重要的找到工作,我们上届就业率还是挺高的,希望我们也能顺利找到工作。热心网友 时间:2022-04-28 05:33
看了精通的意思,可能很多人都不敢说自己真的精通Java!原因有2点:
精通这个词是不能乱用的,因为行业里总有你不会的。想想在自己的工作中,你没有问过他人Java相关问题吗?我相信工作中肯定都问过!
学无止境,何来精通?Java作为一门编程语言,它也在不断的变化,比如说从Java9-Java10,这不都是在不断的变化吗?
学无止境!学习并不是一蹴而就的,在工作中我们肯定会遇到问题,这就需要我们去认真的学习,毕竟不学就不会,升职加薪神马的都说枉然!我们随意看看Java开发工程师的任职要求,就会发现要求会的还是蛮多的!
热心网友 时间:2022-04-28 07:24
1、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
2、JDK:必须熟悉JDK(Java Development Kit,Java开发工具箱——JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。)
3、测试:自己写的程序首先是能够通过自己的测试。
4、语法:必须比较熟悉,在写代码的时候,IDE(Integrated Development Environment,集成开发环境)的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误,并且知道任何修正。
5、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
6、思想:必须掌握OOP(Object Oriented Programming,面向对象编程)的主要要求,这样使用Java开发的系统才能是真正的Java系统。
7、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
8、API(Application Programming Interface,应用程序编程接口):Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
java.lang包下的80%以上的类的功能的灵活运用。
java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer.
http://java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
java.math包下的100%的内容。
http://java.net包下的60%以上的内容,对各个类的功能比较熟悉。
java.text包下的60%以上的内容,特别是各种格式化类。
熟练运用JDBC. 80%、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.
AWT的基本内容,包括各种组件事件、*、布局管理器、常用组件、打印。
Swing的基本内容,和AWT的要求类似。
XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
9、博学:掌握J2EE 、Oracle 、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术。
10、管理:必须熟悉使用Ant(中文译为蚂蚁,是一种基于Java的build工具。)完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
至于学习方法,没什么捷径,多做,多碰到错误,多改正,积累经验,不论是什么语言,都只是工具吧,核心是编程思想,是日积月累的经验。