【花式填坑第4期】 如何成为一个合格的Java架构师
在花式填坑的第四期,大多数用户对Java架构师都存在很多问题要问,为此小慕精选出优质问答,让大家更好了解和学习Java!
Q:1. 目前才大一,不过高三就开始接触编程,一直学的Python,准备要学Java,两个语言都是后端,老师我想问问,两个语言的优劣势是什么,Java除了能用在Android之外还有没有其他的领域可以用(或者是结合硬件的),不一定要面向就业的,还有就是Java学习中应该从什么知识开始学?
moocer讲师:java的优势在服务端开发、服务端架构;python是一种“胶水”语言、能力是将各个不同层次的东西组织在一起。无所谓优劣,只有适用场景不同。java本身和硬件的关联关系不太紧密。 Java需要从它的原理、jdk核心类库开始,然后是各种框架的原理、源码,综合适用以及对框架的修改与完善,甚至自己实现适用于自己公司特点的框架。
Q:2.老师,用java工作也快1年了吧, 现在有时候也学习其他的语言 ,感觉java是一门古董语言,很多语法糖都不怎么好用,而且java更新速度也蛮慢的吧。而且随着人工智能的兴起,Python现在大火, 而node也异常火爆,网上说以后做web 可能只剩下一门语言, 那就是js 。我其实觉得蛮有道理的,不知道老师怎么看?
还有,准备学习一门第二语言,老师推荐什么语言啊?
Google io大会最近将 Kotlin 推荐为android开发默认语言,这个会对java有大影响吗? 问题比较多,望老师谅解
moocer讲师:语言之间是想通的,曾经的Ruby、Ruby On Rails也有要干倒一切的架势。
对于语言,我是这么看的,在大方向上处于一个相对平衡和稳定的状态。10年20年内,能撼动java在大型应用以及服务端领域的语言出现的可能性不大,毕竟有那么多的应用都是用java构建的。
Python作为一门胶水语言(官方的说法),它的目的也不是干掉java,NodeJs也一样,不可能成为java的替代者。各种语言都有其适用的领域。
再说一下你觉得java的语法糖问题,java是要保证向前兼容的,这个历史包袱不容忽视,更新速度慢也可以理解,所有语法糖好的语言,都是比较年轻的,所谓年轻气盛,但是java老当益壮。 总结一下,java正值壮年,还会坚挺,至于在学一门语言,我建议看看python。
Q:3.老师,请问框架重要还是java核心类库重要?
moocer讲师:怎么说呢,核心类库是基础,框架是扩展,不能对比重要性,因为它们所处的技术层级不一样。都得学习、都得了解。
Q:4.学java感觉还是可以的,基本的的东西都掌握了,但是就是没有一点技术的成长,请问老师,怎么才可以在java上面有技术的成长呢?成长的路线是什么呢?也学过安卓总感觉java什么都可以弄,除了底层以外。有什么好的建议么老师?
moocer讲师:java擅长的就是服务端开发。如果你觉得基本的东西都掌握了,那么尝试回答下:
hashmap的原理是什么?
jdk8里hashmap的实现和之前有什么不同?
concurrenthashmap的原理又是什么?
jdk的concurrent包了解吗?
jvm类加载体系?
jvm内存分配规则与垃圾回收机制?
这些都是最基础的东西。 我的建议就是打牢基础,然后了解目前应用比较广的框架的原理和实现以及不同框架的组合应用于对比分析,这样才能在用的时候不至于慌。然后就是自己实现了。
Q:5.老师,能说一下现在学java还是php好啊,现在jsp需求好少啊,现在学java学到一半了,很困惑啊,到底哪个好!!!
moocer讲师:语言无所谓好坏,只有适用场景不同。 java适合服务端开发,php适合前端的快速迭代。jsp的需求确实少了,但servlet必不可少,两者本质是一样的。到底哪个好,要看你未来想往哪方面发展了。
Q:6.JAVA学习了很长一段时间了,基础已经掌握,但是该如何进阶呢?一位合格的JAVA架构师应该掌握那些技能?望老师解惑。
moocer讲师:简单的说,进阶需要的是从使用到原理的过程,进阶就是要了解原理(jdk原理、框架原理),然后做到灵活应用。
看书建议看一些讲原理、讲思想的说, 一个合格的java架构师,要掌握各种常用框架的原理、应用场景、以及在不同场景下的二次处理,特殊场景下还需要自己开发特定的框架。
还有就是要结合业务进行技术选型,需要经验的积累。 罗马不是一日建成的,慢慢来,找准自己的方向,不要局限于使用,要多看、多了解原理。 比如说:jvm的原理是不是了解了?Spring的源码看了多少?如果自己搞一个该怎么做?
Q:7.老师好,请教架构应该具备哪些基础条件,一般从初级开始几年可以达到架构的要求?
moocer讲师:没有明确的基础条件,架构范围也比较大。我觉得需要以下几点吧: 1.jdk要熟悉,核心类库原理要知道; 2.三方框架要多了解,使用方式及原理,这样才能够在选择时能够客观的对比; 3.实践,不断的实践,在实践中积累经验。 至于需要几年,这个不好说,有人3、5年、有人7、8年,有人可能一直都到不了,还看个人的努力程度和兴趣所在吧。
Q:8.请问近三年Java Web工作经验,接触的一直是些中小型,并发小于500左右的项目,向高级java转型应该具体怎么做?如此工作经验,若是打算面一些大型互联网公司会不会太有挑战。目前本人在研Mybatis源码、java设计模式、以及在读《深入理解Java虚拟机》,老师可否有些其他方面实际点的建议。
moocer讲师:当你看完这些东西的原理、源码后,能不能自己写一个呢?这也能够检验你是否真的理解了。
有一句话已经在回答其他同学问题的时候重复说过多次了,那就是学习之后要应用,不断的积累实践经验。 比如说:hashmap的原理,利用这个原理我们可以在实际工作中解决哪些问题?concurrenthashmap的原理,同样应用这个我们能解决哪些实际的问题。
Q:9.请问作为Java开发人员,想要成长为架构师,是不是必须精通运维体系知识和技能?比如集群、高可用、分布式等,还有各种中间件的使用,个人感觉架构师对运维的要求更高,对编程的要求稍微低点!您觉得呢,希望老师能谈谈!
moocer讲师:java的架构大体上分类两类,一类是应用类的,比如服务化、中间件等等;另一类是数据分析类的,比如hadoop、spark等等。看你向往哪个方向发展,侧重要发展的那方面技术就可以了。
架构师是在实践中成长起来的,不是培训出来的,要多实践、多应用、多多积累经验。培训只能解决技术点的问题,架构师除了技术外,还要有宏观的把控能力。不论是运维开始开发,要想成为合格的架构师,编程能力都不能低。
Q:10. 老师好, 我的新电商项目中需要用到搜索引擎,但以前并未接触过。在solr和elasticsearch之间应该选择哪个,它们之间各有什么优缺点,哪个可以更快速地上手。另外,Redis缓存和搜索引擎在项目中的功能定位,应怎么划分?有了搜索引擎,是否就无需将商品缓存到Redis中了?
moocer讲师:1.es在接口友好性以及集群部署上要好于solr,两者都是基于lucence的,本质没有区别;
2.缓存是为了快速找到数据,降低对数据库压力的;
3.有了搜索引擎,缓存仍然也是需要的,而且必不可少。举个例子来说,唯品会没有搜索功能,但是缓存是一定有的。
讲师介绍
拥有多年电商经验的Java工程师,曾混迹于企业应用领域,后转战电商,现奋战于互联网教育行业。在服务端架构、团队管理等方面有着自己的感悟,同时也是慕课网明星讲师,学员超过30万。
相关文章