对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. git 远程新建分支后,本地查看不到

    使用以下命令同步 git remote # 列出所有远程主机git remote update origin --prune # 更新远程主机origin 整理分支git branch -r # 列出 ...

  2. Java内存溢出和内存泄露后怎么解决

    1.首先这里先说一下内存溢出和内存泄露的区别: 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory:比如申请了一个integer,但 ...

  3. web自动化框架如何设计

    web自动化框架如何设计po模式总结: 1. 页面对象模型:当页面特别多的时候,代码更好的维护 2. Po是pageObject设计模式,用来管理和维护一组web元素的对象库 3. 每一个page c ...

  4. TCP/IP的四元组、五元组、七元组

    TCP/IP的四元组.五元组.七元组 四元组是: 源IP地址.目的IP地址.源端口.目的端口 五元组是: 源IP地址.目的IP地址.协议号.源端口.目的端口 七元组是: 源IP地址.目的IP地址.协议 ...

  5. Linux keepalived工作原理

    keepalived简介与工作原理 Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他 ...

  6. PAT 甲级真题题解(63-120)

    2019/4/3 1063 Set Similarity n个序列分别先放进集合里去重.在询问的时候,遍历A集合中每个数,判断下该数在B集合中是否存在,统计存在个数(分子),分母就是两个集合大小减去分 ...

  7. HAOI2018苹果树

    题解 首先所有生成树的情况树是\(n!\)的,因为第一次有1中方法,第二次有两种放法,以此类推... 然后我们发现距离这种东西可以直接枚举每条边算贡献. 于是我们枚举了一个点\(i\),又枚举了这个点 ...

  8. DataReader转Dictionary数据类型之妙用

    datareader转dictionary有很多用处,可以输出表中部分字段转实体字段,以前需要全部字段输出或者再建一个实体模型才行,这样就可以减少数据库的输出量了,特别是某些接口的格式化输出很方便. ...

  9. IIS8的SNI功能实现同一服务器多HTTPS站点

    名词解释: SNI指是一项用于改善SSL/TLS的技术,在SSLv3/TLSv1中被启用.它允许客户端在发起SSL握手请求时(具体说来,是客户端发出SSL请求中的ClientHello阶段),就提交请 ...

  10. 2017-12-20python全栈9期第五天第二节之字典的增删查改和字典的for循环

    #!/user/bin/python# -*- coding:utf-8 -*-dic1 = {'age':24,'name':'zd','sex':'boy'}print(dic1)#增dic1[' ...