简历和自我介绍上经常能够读到“ 精通 Java” 这样的话,有人和我说,精通 Java 的人太多了,精通 Java 已经不能算亮点、不能给自己加分了。可是事实真是这样吗?

对于语言的学习,我有一种观点,一是纵向,即要选择一门自己认为合适的语言学到有相当的深度。二在于横向,即要学习不同类型、不同历史和不同门派的语言:

既有底层的语言,也有高级语言;

接触一些动态语言、函数式语言;

了解一些不同语言的编程范型和编程方式,比如基于原型编程、面向切面编程、命令式编程等等;

最好能关注一门年纪尚浅,甚至小众的语言,了解一门语言的发展。

横向类比能够带来对一门语言的不同认识,但是,有广度而没有深度的专家是可笑的,深入地学习一门语言是不可缺少的。就以 Java 为例,依我看来,至少有这样几个递进的过程:

语法语义。

这是最基础的部分,都说 Java 简单,语法容易学习,但是,真要细说起一些细节来,也真够我啰嗦了。我见过一些所谓的“ 精通 Java” 的人,他们却不知道 strictfp 关键字,说不清 volatile 和 transient 的作用,不知道怎么去定义一个注解(@interface)。你觉得这些要求苛刻吗?对这些以“ 精通” 要求自己的人。

熟悉语言的应用范围。

不同的语言有不同的擅长应用领域。就像想用 Java 去写操作系统或底层代码是多么不靠谱一样,在这个过程中应当熟悉语言的优势劣势,这里你自己会提出自己的见解。譬如 Java 最 NB 的地方在哪里?

跨平台?可是很多语言都可以跨平台;

开源?那开源的语言多了去了;

高性能的虚拟机?包括先进的编译解释优化技术;

还是那么多用 Java 实现的类库、框架呢?

把那些用 Java 实现的类库和框架脱离出 Java 语言本身来归类,未必是恰当的。熟悉 Java 就必须阅读许多类库和框架的源码。

学习语言的实现机制。

就像精通 Java 的程序员需要了解 Java 虚拟机一样,也许不需要对虚拟机规范一清二楚,但是起码要知道 CAFE BABE 吧?起码要了解 JIT 的机制吧?起码要明白垃圾回收策略中的 CMS 吧?起码要能尝试自己编译一把 JDK 吧?起码要能去定位那些无响应的 Java 程序问题吧?在这个过程中,从了解一门语言,将逐渐进化到去了解一门语言所处的平台。

整理语言发展的历史。

为什么学习编程语言也要关注它的历史?因为去了解一门语言的发展历史(比如这篇关于 Java 多线程编程的历史),可以明白在这过程中碰了什么壁、犯过什么错、有哪些大的变更,学过别人家什么东西…… 这对于分析现今这门语言与其他语言的碰撞、展望一门语言的未来大有益处。在这个过程中,会不由自主地将其和不同时期的其他语言比较。如果给你一次重新设计这门语言的机会,你一定能够提出不少改善的意见来。

我从来不相信精通 Java 是一件容易实现的事情。有一股风潮,说搞底层研究的人看不起搞上层业务的人,写 C 的人认为写 Java 的人没水平,做后台的人觉得做前台的没技术含量…… 我说,何必呢?

技术无贵贱,只是专注的领域不同而已。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

×Scan to share with WeChat

java精通时间_你真的精通 Java 吗?相关推荐

  1. java中引用类型_您真的了解Java中的4种引用类型吗?

    Java中提供了四个级别的引用:SoftReference,FinalReference,WeakReference和PhantomReference.在四种引用类型中,只有FinalReferenc ...

  2. java 秒变成时间_使用Quarkus开发Java云原生应用

    Java应用的云原生化痛点 Java技术栈作为企业级开发的利器已经发展了快二十多年,大家基于Java技术栈开发了大量的应用.随着云原生架构的普及,越来越多的用户开始使用容器技术来运行微服务应用程序.借 ...

  3. java把时间戳转换成时间_(转)java时间与时间戳互转

    java中时间精确到毫秒级,所以需求时间需要         除以1000 //将时间转换为时间戳 public static String dateToStamp(String s) throws ...

  4. mysql java 日期格式化_(转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  5. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  6. java架构师_成为一名Java高级架构师究竟要学哪些东西??

    Java架构师,应该算是一些Java程序员们的一个职业目标了吧.很多码农码了五六年的代码也没能成为架构师.那成为Java架构师要掌握哪些技术呢,总体来说呢,有两方面,一个是基础技术,另一个就是组织能力 ...

  7. java笔试题_一道简单的 Java 笔试题,但值得很多人反思

    专注于Java领域优质技术,欢迎关注 作者:匿蟒 前言 面试别人,对我来说是一件新奇事,以前都是别人面试我.我清楚地知道,我在的地域与公司,难以吸引到中国的一流软件人才.所以,我特地调低了期望,很少问 ...

  8. 孙鑫java基础视频教程_孙鑫老师JAVA无难事视频教程 最适合java入门学习打基础的课程 附源码讲义 12课...

    课程介绍 由孙鑫老师亲自授课录制.内容涵盖面广,从入门到精通,授课通俗易懂,分析问题独到精辟,学员通过本套光盘的学习,能够快速掌握Java编程语言,成为Java高手. 由孙鑫老师亲自授课录制.内容涵盖 ...

  9. 做Java头发少_这35个Java代码优化细节,你用了吗

    链接:https://www.jianshu.com/p/6e472304b5ac 前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有 ...

最新文章

  1. 解决eclipse ctrl+鼠标左键不能用
  2. 雷军:我的程序人生路
  3. jQuery的attr方法处理checkbox的问题
  4. es6 工作中常用总结
  5. 关于编码的一切【转载】
  6. Matlab | 空间域水印技术:LSB(Least Significant Bit):计算峰值信噪比PSNR(matlab源代码)
  7. lnmp1.4上thinkphp5.0出现404的解决办法
  8. 如何从JavaScript数组中获取多个随机唯一元素?
  9. 安卓开发——JNI——回调java中的方法
  10. JavaWeb练习项目--JEE商城
  11. 杉车大数据:禁售燃油车政策终于实施了!!!
  12. windows 2003 iis php,windows 2003 iis安装php 5.2版本步骤
  13. 《老路用得上的商学课》91-95学习笔记
  14. 适应iPhone5的尺寸
  15. Transition组件
  16. redis分布式锁和调度锁
  17. 入库管理系统示例代码
  18. 华为企业BG总裁阎力大:数字化转型激活指数级增长
  19. 美国国债主成分分析Matlab
  20. Flask成长笔记--依赖包操作

热门文章

  1. 文本处理三剑客awk的使用
  2. [译] 如何在东南亚拓展您的应用业务
  3. Stanford_NLP_TOOLS:CRFClassifier
  4. CSS Reset(css的初始化)
  5. 八、图形与图像处理(2)
  6. 使用双栈实现一个队列
  7. IE 6 特有的条件注释详情
  8. 深度解析vsftpd服务
  9. 如何做好会员用户画像分析,比消费者本身更懂自己?
  10. Python很简单,你一定能学会【加油!】