`

超越java-此书笔记

    博客分类:
  • java
阅读更多

前言:

SSH所带来的烦恼:重复的事情太多、XML配置激增、改变的步调太快

第一章:

我们可以选择性的忽略当前的环境,但是技术是有生命周期的,如水煮青蛙,需要得知自己身边的温度

某种技术在某段时间会带来生产力的提高,但这段时间随时会结束

 

Jason Hunter的观点:

1.Java已经结束了它的领导趋势,我们需要把兴趣分散到其他地方。

 

一个相当实际的方法:得知什么是最热门的技术,从训练上可以让你赚最多的钱的技术就是最热门的技术

我们现在的时期是要把java当作理所当然,就像日用品

 

SSH带来了生产力,在建立企业应用时,可以花更少的精力,但是可能需要1年才能学会它们

作者无法说:可以轻易的培训java程序员,因为要学的东西太多,需要很多时间

 

创新来自需求,jdbc转移到iBATIS/JDO/Hibernate,struts转移到Trapestry

去学习java建立一个简单的web应用程序是非常痛苦的,因为很难,而且失败了后果很惨

 

重点:

我在<Better,Faster,Lighter Java>一书中这么说过,试着将所有横向的服务和所有的行为都写进业务对象的程序代码中,是愚蠢的行为,而继承能够帮助的地方不多,你必须使用特技(trick),如编译期增强 bytecode,或者运行时生成proxy程序代码,才能让对象具有透明性(表面没有改变对,但实际上改变了对象)

 

Java5的注释(annotation)是全新的工具,从许多方面来说,它是Java社区的一种编程模型,我不确定是否需要学习使用注释,但我确定学习的时候会遇到一些大灾难。

 

JVM比Java更重要,原因这里不列出来了

 

Java的许多特色适合开发建立OS的延伸和中间件,但是会限制应用软件的开发。越来越多的专家宣传动态类型的应用程序更简单,更具生产力

 

 

Java社区正在投入巨大的精力研发编程风格,期待java更透明、更反射、更动态,这些方法称为元编程,因为花更多时间在类上,而不是对象。

对我来说,对企业应用程序的开发来说,语言或环境最终重要的是生产力

 

(没有一种语言可以保持领先的地位)

 

第二章

想知道java走往何处,你必须知道它从和而来,你需要记住,究竟是什么让我们离开现有的语言而投入下一个语言。

1.OOP团队可以提高生产力,相当于面向过程的开发

2.C++将OOP推进了一步,但这一步实在不灵活,甚至有不良的后果

3.Java的语法接近C++,并且提供更好的技术(这里有一系列的优点,不列举了),是C++程序员转而进入java社区

4.Java的Applet掀起了学习浪潮,虽然Applet已经被淘汰,但它是java的一个开端,随后Java在server端占据脚跟。

 

James Duncan Davidson的观点:Java为何赢

1.Java当时确实很好,Java是强类型语言,在某些方面很好,但其它方面却是弱点

2.java在servlet中发挥了巨大作用

3.Java是强类型的,对API的信心而不是对框架的信心。这是很重要的一点,即使简单的API也增加了复杂度。例如,你再也不可以只写一个servlet,你必须写一个servlet,且编辑一个XML文件。这磨灭了servlet的简单易用特质。只会越来越依赖工具

4.Java在GUI没什么竞争力

 

作者:没有一样东西可以包含一切,可以使用一个管子将2个工具串起来,这样形成的威力更大

 

servlet:既然网页是在服务器端形成的,所以产生的内容是动态的,可以然后交给客户端

 

 

下一个成功的编程语言必须满足下面的4个条件:

1.建立一个明显的社区

2.具备可移植性,java语言提高了后续语言的门槛

3.需要提供经济上的动机

4.需要展示技术优点

 

第三章

Java的异常策略和静态类型以及称为一种妨碍,Java不像以前一样简单了

 

我相信下一个编程语言会更动态,且需要虚拟机的优点(可以说JVM也可以说其他VM)

 

java社区在GUI上并不成功,Swing和SWT让程序员停留在很低的层面上,这方面,微软和苹果具有更好的框架

 

java在企业集成方面是很好的语言,具有很多框架,像分布式事务处理

相对C++而言,企业领域中,软件开发速度比运行速度更重要

 

随着Java渐渐往复杂的问题移动,简单的问题也就越来越不易解决

(Java在出现的时候,社区扮演了重要的角色,如果有新语言挑战Java,就必须能迅速的拥抱群众)

 

一般人的误点(下面是作者反对的看法):

1.java已经结束领导趋势,java的确在营销上占有相当大的优势

2.java不是最佳的应用程序语言,甚至不是什么特别好的应用程序语言

3.java不是最具生产力的语言,它只不过比java之前的语言更具生产力

4.java能够让人离开C++,因为它提供了更好的改进

.......

 

第四章:

我现在已经意识到java的危险,它已经变得太困难而难以驾驭了

典型的需求:

1.java在写中间件的时候比教有用

2.web方面有比servlet更具生产力的,如php

3.处理xml上亦是

4.对于大型企业项目来说,java更适合,因为有丰富的资源...但是大多数企业项目是比较小的,如果语言能更具生产力

 

java培训5周只是学个皮毛

java语言不适合敏捷开发,java不是简单的语言,在极短周期的开发也不适合

 

java的限制

1.框架提高了java的生产力,但是增加学习曲线

2.编译期间异常和类型检查可以提高安全性 (java在安全方面确实不错),但让时间和语法的成本增加

3.java不适合表现结构性数据,这使得java过渡依赖XML,造成额外的复杂度和体积

4.java不是纯的OO,如基本类型

5.java比c++更动态,但比不上Ruby等的动态,java开发者正在开发元编程,但他们无法用够快的速度完成

6.java比其他直译式语言更动态,编译和部署周期更长

 

 

Steve Yegge:java的限制

1.java抽象工具欠缺,抽象并非java的第一类功能,没有参考参数,没有关键字,没有默认参数,没有析构绑定或平行赋值,没有延续,没有用户定义的运算符........

2.java无法扩展,它不能成长,没有元编程、没有宏、没有模板、没有东西给你语法进行抽象

3.java可以表达程序,但不可以表达数据,必须使用property XML以及其他方式来定义数据

4.java的静态系统很烂

5.java具有太多不必要的复杂度

 

java是强类型的,必须先编译来处理类型,在动态语言中这不是个事

 

泛型,即使你喜欢泛型,但你不会喜欢java实现泛型的方式,因为JVM不支持泛型,这仅仅是在语言层

......

对于应用编程来说,更动态的语言将会胜出

.........

下一个受欢迎的语言不会是基本类型和对象混合的语言

 

java强调异常检查,但是这样弊大于益

java过渡依赖XML

java处理字符串能力比较弱

java学习越来越复杂,让人不想接触

java语言变得复杂,使得不使用IDE就会完全失控

 

重点:

java最重要和最基本的工作,也就是关系数据库上的web用户界面,我一点都不认为java的框架现在的方向是对的。大多数框架都一直在快速的增加新的特色,而不是简化已经乱成一团的现状。

java变得只适合大型企业系统开发的语言和平台,就算是简单的问题,java也处理的复杂

 

java社区长久以来都在忍受太多的架构、xml、层次

 

 

第五章:

Lisp具有很高的生产力,但一般人不容易这个语言。

perl即丰富又具威力,但相当不一致,且不易维护

 

下一个语言一定需要支持虚拟机

必须处理因特网的需求,且比java做的更好

必须应该让你以有生产力的方式处理xml、效率也必须很好

下一个语言应该和java程序相互合作,最好还是同一个虚拟机

 

许多技术都超越了java,但还是赢不了java

生产力将会是经济上的催化剂,开始侵蚀java的根基

 

python具有简单的语言和语法,但是web链接库则一点都不具有可亲性

 

拦截器是小孩子的玩意,你可以使用元编程作出让人惊人的事情

 

我喜欢python的样子,但是我不认为这是最终的语言,python最大的问题是缺乏java程序员离开的理由,python需要一个杀手级的应用,就像Ruby的ROR,我们已经定论,python将会成为一个适度成功的动态语言,比Smalltalk成功的多。

 

身为一个java程序员,大概也看过试着做太多事的jsp网页,这种网页写起来很快,但很快会陷入泥潭

 

 

.........

..........

 

第九章

Steve Yegge :Python Ruby Groovy

Ruby和Python有很多优点,它们执行的都太慢,需要编译和VM

其次这2中语言,需要对并发的支持程度,我将赌注放在了Ruby

Groovy很酷,但问题也很严重,除了营销做的好之外,其它简直糟透了


元编程在某种形式上将会越来越来成为现代语言的重要特性。

Java限制你扩展类的方法,要进行反射就必须做很多繁琐的事,许多时候还得用许多不自然的方法(像是byte code增强、程序代码生成、动态proxy)

 

Ruby或许不会像Java这么广大的链接库,但是缝隙正在迅速缩小

 

有一些小细节会阻碍Python的发展,如有些人不喜欢空白在Python中被强制,这样失去了灵活性

 

Perl Lisp PHP作者不认为会流行起来

或许根本不会有下一个东西

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics