开源中国,高手问答邀请了疯狂软件李刚老师 和大家一起探讨关于 Java 的问题。
李刚,十余年的软件开发从业经验,疯狂软件教育中心教学总监,疯狂 Java 实训营创始人,疯狂 Java 体系原创图书作者。李刚老师作为国内著名高端 IT 技术作家,已出版《疯狂Java讲义》、《疯狂Android讲义》、《轻量级Java EE企业应用实战》、《经典Java EE企业应用实战》、《Struts 2.x权威指南》、《疯狂HTML 5/CSS 3/JavaScript讲义》等著作。
网友问:我坐标成都,按我接触到的业内行情,这边小作坊式的创业公司遍地横生,出于对经济效益的追求,成本压制等等,给新人慢慢成长机会的公司比较少。我觉得现阶段我们这边对于程序员的需求,可以概括为“小、快、灵”。小,是指项目小,项目开发人员少;快,是指开发周期短,灵是说程序员通常干的活儿都比较杂,甚至有时候需要从架构设计到前后端撸代码一溜儿干完。请问大佬,在这样的情况下,加班特严重,收入拉平均工资后腿儿,如何有效提升自我,规划进阶之路。
疯狂软件李刚回复: 首先要说明一点,小的创业公司才是软件行业的真正活力。我对小的创业公司一直都充满尊敬。 从一个普通开发者的角度来说:小公司学技能,大公司学规范。 从工作者的角度来看,当你觉得小公司容不下工作者伟岸的身躯时,他完全可以跳槽到其他大公司的。 程序员提升自己,靠的是长时间的坚持,业余时间的坚持。
网友问:老师您好,现在java版本更新速度加快(或许表明java的繁荣),新版本带来新特性,让功能完成更方便简洁,但是新特性不一定会在项目中使用到,尤其对于比较老的项目,java10都要出了项目中还用java7,再加上新技术只对于高版本支持(比如新出springboot要求最低版本是java8),如何做版本选择呢?或者有没有必要使用最新版本?还有之后java版本更新会不会越来越向 框架化 靠拢,比如springboot/cloud,比如java9新特性模块化,那未来java会不会像框架一样类似微服务化使得编程更加方便简单呢?
疯狂软件李刚: 1. 升级Java 8是最基本的要求了,还用Java 7的项目,难道准备做化石呀。 2. 语言升级的趋势,必然是功能更强大,编程更简洁(注意我说的是简洁,不是简单)。
问:请老师讲下Java开发者可选的职业发展方向,谢谢
疯狂软件李刚: 非常多啊, 传统银行、通讯、航空、电力、交通、公共安全等领域各种后端开发,基本都是Java的。 移动端Android开发。可以用Java啊,现在当然也可以用Kotlin。 还有大数据,VR等前沿就业方向。
问: Kotlin是否会对java造成冲击?
疯狂软件李刚: 就像C/C++,一直都不是最优秀的,历史也足够古老了。各种语言来了又去了,最后依然坚挺的要死。 Java也一样,我可以明确地告诉你,Java不是最优秀的,Java有不少问题,但要取代Java可能性不大 2周前
疯狂软件李刚: Java几乎涉及到生活的各方面:世界上所有的银行、通讯、航空、电力、交通、公共安全等领域的核心系统,也都是基于Java的,如果完全放弃Java,等同于把世界上所有的这些应用系统全部要替换掉。 ——虽然每隔1~2年,就有各种语言出来说要代替Java,跟着起哄的基本都是SB。如果在软件行业呆的时间够久就知道:语言是否被代替,和它的生态圈有很大的关系。
问:生产环境还是停留在jdk7,不考虑迁移工程的改动成本的话等,有必要升级生产环境的jdk到jdk8甚至9吗?如果有,有最佳实践的案例吗?
疯狂软件李刚: 当然,如果你只是打算干短时间就跳槽的,可以不用折腾了。但如果你打算在这里还要干2年以上的,建议你还是升级吧,因此Java不会停留在Java 9,Java还会继续升级,你的项目总要升级的——所以只是迟早的问题。
疯狂软件李刚: 建议还是升级吧,因为你最终还是要升级的。
问: 靠Java入行,现在已经7年,开始用的是jdk6,随着接触的语言越来越多,就越来越觉得java语言冗长,直到jdk8的发布,新特性让我非常兴奋,直接在当时的公司推动jdk8的落地,后来遇见了kotlin,呵呵,瞬间入坑,而jdk9的发布基本上没有什么吸引我的地方,而jdk10,jdk11,我都不敢去想。java生态当然不用说,非常强大,但是这门语言本身的发展,我感觉看不到什么未来,这也是kotlin让我瞬间入坑的原因,您认为呢
疯狂软件李刚: 另外一点就是:我看好Java,与我个人利益无关。像我们这种程度的程序员,切换任何编程语言,基本就是1~2天的事情。我看好Java,完全是客观评价。就像C/C++,一直都有很多问题,一直都在传说被淘汰,但永远不可能。 2周前
疯狂软件李刚: 客观地说,我依然非常看好Java的未来。 可能会有SB说,因为我是搞Java的,所以我才看好Java的未来。其实这些SB不知道,我用得熟的编程语言有十几种,光写书介绍过的编程语言也有快10种了,就像你说的Kotlin,我同样非常熟悉。但我还是想说,Kotlin想取代Java,几乎没可能。
问: java 和 kotlin 的应用场景是什么啊?什么情况下应该用 kotlin?
疯狂软件李刚: 我也觉得Kotlin其实蛮好的,而且Kotlin本身依然是编译成.class文件,因此Kotlin几乎可以完全利用Java现有的各种工具库和框架,非常有吸引力。 所以只要你想,你基本都可以使用Kotlin.我已经用Kotlin改写了以前的不少项目,而且使用Kotlin改写《疯狂Android讲义》一书
渡世白玉: 能用java的都能用kotlin、、 学会kotlin的场景用kotlin、、、
问:jdk8升级到jdk9和jdk10有哪些兼容性的问题?
疯狂软件李刚: 在我用JDK 9的过程中,基本可以平滑过度。
只是如果在Java 9是使用Hibernate、Spring等框架,则可能面临缺失一些常用类的问题:因为Java 8是一个整体的,基本上Java所有的类库都会加载,有些类库在Java 9的核心模块中删除了。典型的:在Java 9上使用Hibernate 5.2,需要额外添加jaxb-api-2.1.jar、jaxb-impl-
2.1.17.jar、activation-1.1.1.jar等JAR包
问:java工作了两年,虽然工作得问题大部分都能解决,但是主要是进行二次开发,一直没有机会进行大项目的搭建,感觉自己没有什么竞争力,不知道想当上架构师需要学习些什么。
疯狂软件李刚: 想成长为架构师,一般我是推荐从4方面着手。 1. 学习优秀框架的源代码。典型地,Spring和核心源代码肯定要搞一遍。 2. 把常见设计模式用到非常熟。要达到不用去想,遇到问题自然而然就会用上合适的模式。 3. 对现有项目进行重构。 4. 带领团队开发项目——这一点是必须的,你只有负责一个项目才会真正成长。
问: 李老师您好,请问Java基础不是很好,工作快三年了基本做的是crud,现在很想提高自己,怎么才能有效的提高?谢谢
疯狂软件李刚: 想提高自己,关键还在于你自己,多坚持学习即可。具体可从如下方面着手。 1. 学习优秀框架的源代码。典型地,Spring和核心源代码肯定要搞一遍。 2. 把常见设计模式用到非常熟。要达到不用去想,遇到问题自然而然就会用上合适的模式。 3. 对现有项目进行重构。