对Java的了解还有待进一步提升,也没有做太多实践工作。只是把脑袋当成电脑,把Java放在里边不停地转,观察它的线路。得到的总体印象加上书本参考,认为Java的应用场景是慢和稳。

学编程语言总会接触到c和汇编。从发展来看,最初的语言是用来配合计算机,根据计算机的硬件执行步骤编程出01。为了把01稍简化些并且配合已知的常用功能造出了汇编,达到了可以简单的阅读。随着使用量的增加,功能集合越来越多,“简单的阅读”满足不了需求,继续在它的基础上产生c类的语言。让计算机自己把c翻译成汇编,再硬件性翻译成01。这里还是语言和机器沟通,只不过多了几步软件处理,通过计算机自己把c处理成它可以识别的01。也就是,给计算机c还是01,对计算机本身来说没什么区别,c,通过计算机自身翻译,和01站在同一个对外承载切面上。

c比汇编好多了,随着需求的增大又生出面相对象的语言,让编程看上去更容易组织和被理解。发展到这里都是为了迎合需求,用更容易让人理解的方式开发语言。“编程语言”一直在做的事就是在人和计算机之间协调,工程量越来越大,怎样保证人的低脑力输出和计算机硬件的高效调用,便需要一个独特的平衡协调。

面相对象语言都有自己的发展方向。Java的存在也有它独特的思维体系,它更偏向于去妥协人的思考过程,也就是平衡偏向减少脑力输出,同时增加运算量,降低了速度。

Java是动态编译的语言。有很多语言都是“静态编译”,需要执行的01都被提前写好在一个文件里,等到运行的时候直接加载这个文件执行就可以了。像c就是这样,执行起来是一个早就拼好的01串。动态编译是用到什么再临时去拼凑,只有运行的时候才把程序拼出来并转换成01。如果某一个文件的所有功能一直没有用到,那么它就不会被翻译成01。对计算机来说,在执行到相应任务之前,它并没有办法获知具体需要做什么。

Java在运行的过程中自行回收不再使用的内存。编程一般讲究自己开的内存自己回收,这样可以对内存应用有一个直观的感应。随着工程量增大,回收内存也占用了大量的脑力,让语言自己去回收就可以让人轻松出来,有更多的脑力去投入到主题逻辑中。

想起来之前对get和set方法的提问,明明设置成可见属性就能很方便使用,为什么要设置成隐藏属性,并且用这两方法来操作。有人说为了封装,有人说方便以后再获取或者设置值的时候做一些前置或后置。想到内存上的话,一个是分配到栈,一个是分配到堆。这些思考使人更多去了解面向对象,了解对象和对象之间的相互协作。“把一件事交给另一个对象,你不需要知道它具体怎么完成的,只要知道怎么让它执行这件事就好。”。(如果直接用属性,你不但知道了怎么调用它,还知道了它是怎么完成的,这个对象不称职。)在java里,很容易感觉到这种相互配合。每一个对象不再是功能的抽象,聚合一个对象越来越偏向于从对象本身对它进行思考,埋合进自己的思维,让对象显得有思维。写的代码是一个对象,而不是一个功能集合。它并不是把相关、类似的功能聚集在一起的文件来方便功能的实现,它本身是一个对象,是一个物体,附有特殊的责任,在职责内的它能做,职责外的不能添给它。写软件不是功能和功能配合,是对象和对象配合。它区别于函数库。语言里边的继承使得它更适合融入人的思想。多态就像针对不同的环境做出不同的反应,本质上确是履行了同一种职责。接口就是你的存在在最开始就具有了一份通用功能,别人想用这份功能的话,都不需要知道你的名字就可以引用。软件是一个对象相互协作的时空。

为了实现这种特别抽象出来的时空,java做了很多事去处理底层,这会变慢。计算机发展硬件总在不断适应软件需求,现在还是慢的状况,以后却是未知。

Java的慢和稳的更多相关文章

  1. Hello——Java10新特性,请了解一下

    2018年3月20日,Java 10 正式发布! 相关地址: 官方地址:http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...

  2. 2018.11.25 AMC-ICPC 亚洲区域赛(焦作站)吊银

    11月23日 大清早,跟着wyb的脚步,早起跑过去听方伟的编译原理,然鹅一点都没听进去,在焦作胡辣汤群里疯狂灌水... 听说焦作那边冷得不行,前一天看天气预报说那边已经是2℃了,都快零下了,然鹅学校里 ...

  3. OOP第一章总结

    经过了三周的OO,尽管过程不太轻松,但是有所得还是值得欣慰的事! (1)程序结构 第一次作业: UML类图如下,第一次作业在结构上并没有太多面向对象的思想,只是简单的分类,一个运行类,两个对象类,预处 ...

  4. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  5. 2019年2月编程语言最新排行:java稳居第一(java优势在哪里)

      近日TIOBE公布了2月编程语言排名,在意料之中java稳居第一,C和C++分别位居第二第三名. 下图是2 月编程语言排行榜 TOP20 榜单以及前 10 名编程语言长期走势图:         ...

  6. Java程序员在用的大数据工具,MongoDB稳居第一!

    据日前的一则大数据工具使用情况调查,我们知道了Java程序猿最喜欢用的大数据工具. 问题:他们最近一年最喜欢用什么工具或者是框架? 受访者可以选择列表中的选项或者列出自己的,本文主要关心的是大数据工具 ...

  7. Java并发编程73道面试题及答案 —— 面试稳了

    今天主要整理一下 Java 并发编程在面试中的常见问题,希望对需要的读者有用. 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任 ...

  8. 【Java面试】面试遇到宽泛的问题,这么回答就稳了,谈谈你对Redis的理解

    "谈谈你对Redis的理解"! 面试的时候遇到这类比较宽泛的问题,是不是很抓狂? 是不是不知道从何开始说起? 没关系,今天我用3分钟教你怎么回答. 大家好,我是Mic,一个工作了1 ...

  9. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

随机推荐

  1. MyBatis-Plus

    一.通用SQL 1.简介:(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 2.定义Javabean中成员变量所使用的的类型: ...

  2. sts 创建springMVC项目---- maven和tomcat 错误处理

    今天学习spring的时候,学到了springMVC, 因为springMVC 就是beginning spring 书籍的第三章,为了更深入或更简单的起步学习springMVC, 我又找了另外一本书 ...

  3. [ffmpeg] AVOption

    在ffmpeg中,常使用AVOption的API来进行参数设置.AVOption的API主要分为设置参数以及提取参数两种,无论是哪一种API都主要分为两大步骤: 寻找出参数所在的内存位置. 如果是设置 ...

  4. nodejs 搭建本地静态服务器

    1. http-server 参看 https://www.npmjs.com/package/http-server 使用http-server搭建本地静态服务器 全局安装http-server n ...

  5. [BZOJ 1095] [ZJOI 2007] 捉迷藏

    Description 传送门 Solution 先将原树转化成点分树: 然后维护三个堆: \(c[i]\) 保存点分树中子树 \(i\) 中的黑色节点到 \(fa[i]\) 的距离: \(b[i]\ ...

  6. layui——Cannot create property 'LAY_TABLE_INDEX' on number '1'

    前言 用layui写的后台,PHP处理好数据传输过来的时候报错了,最后发现是数据处理成layui格式的时候出错了,直接传了json对象过来,layui需要的是一个json的数. 解决 外面套成数组即可 ...

  7. 如何解决Redis中的key过期问题

    最近我们在Redis集群中发现了一个有趣的问题.在花费大量时间进行调试和测试后,通过更改key过期,我们可以将某些集群中的Redis内存使用量减少25%. Twitter内部运行着多个缓存服务.其中一 ...

  8. did not finish being created even after we waited 189 seconds or 61 attempts. And its status is downloading

    did not finish being created even after we waited 189 seconds or 61 attempts. And its status is down ...

  9. Spring Boot 集成 Spring Security 实现权限认证模块

    作者:王帅@CodeSheep   写在前面 关于 Spring Security Web系统的认证和权限模块也算是一个系统的基础设施了,几乎任何的互联网服务都会涉及到这方面的要求.在Java EE领 ...

  10. GWAS后续分析:LocusZoom图的绘制

    LocusZoom图几乎是GWAS文章的必备图形之一,其主要作用是可以快速可视化GWAS找出来的信号在基因组的具体信息:比如周围有没有高度连锁的位点,高度连锁的位点是否也显著. 下面是locuszoo ...