`

超越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作者不认为会流行起来

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

 

 

 

 

分享到:
评论

相关推荐

    favorite java book serials head-first-java-2nd-edition

    此书不仅提供了一个全面的Java编程教程,还通过其独特的教学方法,让学习过程变得轻松愉快。与其他传统的教科书相比,这种创新的教育理念帮助读者建立了一种更加稳固和深刻的理解,这正是“Head First”系列受到广泛...

    Programming Language Processors in Java- Compilers and Interpreters

    ### 编程语言处理器在Java中的应用:编译器与解释器 ...此书不仅涵盖了理论知识,还包括了大量的实践案例和技术细节,对于想要深入了解Java编译器和解释器工作机制的读者来说是非常有价值的参考资料。

    For Dummies. Java All-in-One Desk Reference(《傻瓜系列:Java完全桌面参考手册》)

    傻瓜系列丛书之一,适合没有任何经验背景的初学者,简单易懂,对于有经验的java编程者,此书也是一本不错的reference &lt;br&gt; Book Description: * Nine minibooks filling more than 800 pages provide the ...

    Thinking In Java-3rdcn.pdf

    此书被视为Java程序员的必备宝典,不仅涵盖了基础语法,更深入探讨了面向对象的设计原则和高级特性。 - **发展**:随着Java技术的演进,尤其是J2EE等企业级应用的兴起,本书第三版应运而生,反映了作者对Java认识...

    EXCEL函数与图表一点通-读书笔记(1-5章,更新中...)

    《EXCEL函数与图表一点通》的读书笔记,对想学习函数的朋友很有帮助,我个人做的,由于本人正在阅读此书,现在的文件只有1-5章,还在更新中,希望和大家分享,共同进步。

    VC++技术内幕-学习笔记

    作者建议在阅读此书之前先熟悉Windows编程的基本概念。 在第一天的学习中,提到了Windows应用程序的核心——WinMain函数,它是每个Windows程序的入口点,负责初始化程序和创建主窗口。MFC(Microsoft Foundation ...

    java编程思想读书笔记

    这份读书笔记记录了读者在研读此书过程中的理解和体会,涵盖了从基础语法到高级特性的全面解析。以下是笔记中可能涉及的一些关键知识点: 1. **Java语言简介**:Java是一种跨平台的、面向对象的编程语言,由Sun ...

    java版飞机大战源码-java-performance:Java系统性能优化实战

    有幸阅读此书,这是一本大道至简的Java性能优化指南,使得我们的开源项目的代码质量和性能有了飞跃,更能够指导每个Java工程师写出优雅、易阅读、高质量、易于扩展的代码。 ——肖宇(开源组织dromara.org创始人,...

    slugstack-rewrite-java-definitions:openrewrite示例,示例和定义。 也是发布多模块项目的一个很好的例子

    slugstack-rewrite-java-definitions openrewrite示例,示例和定义 使用jenv进行.java-version管理 EncapsulateData用法 参见有关Recipes和Environment的主要openrewrite文档; 除future-me外,没有人真正阅读此书,...

    自动控制原理--第六版--胡寿松--习题答案

    ---作者:胡寿松--出版社:科学出版社------可网上查询此书详细信息-----此书给出自动控制原理(第六版)中全部习题详解,(兼容第五版)包括概念题、基本题、证明题、工程应用题、MATLAB题、设计题及难题等7类。...

    图解java多线程设计模式-结城浩-完整高清带书签版本

    《图解Java多线程设计模式》是由日本著名技术作家结城浩编著的一本深入探讨Java多线程编程的经典著作。...通过阅读此书,开发者可以更好地理解Java多线程的内在机制,从而编写出更加高效、安全的并发程序。

    Java与模式----Part 1

    阎宏著,可惜就不是很清晰,需要的抓紧下吧,不是很好找到此书的电子版。

    学习java必看的书籍

    - **简介**:此书详细介绍了Java网络编程的相关技术和实践,是一本非常适合想要掌握Java网络编程技巧的开发者的书籍。 - **特色**: - 涵盖了Java网络编程的所有基础知识,包括Socket编程、URL处理等。 - 通过丰富...

    pragmatic-java-engineer:Java工程师修炼之道-梳理Java知识体系,沓实架构基础

    《 Java工程师修炼之道》已开源章节后续计划此书一开始是计划并且要章专门介绍大数据开发技术,然后现在越来越多的公司在建造自己的大数据平台,大数据技术也逐渐成为Java工程师的必备技能。但自己此方面经验丰富,...

    JAVA编程电子书专题下载

    - **内容概述**:此书聚焦于Java Applet技术的实现细节,通过多个案例深入浅出地讲解如何创建可嵌入网页中的Java小程序。 - **适用人群**:对Java Applet技术感兴趣的Web开发者或教师。 - **核心知识点**: - Java ...

    Head First Java PDF版-方便查阅

    此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。 而且不只是读死书,你还会玩游戏、拼图、解谜题...

    机器学习算法-java版

    《机器学习算法-Java版》是一本专注于将机器学习理论与Java编程实践相结合的专业书籍。在当前大数据时代,机器学习已经成为了数据驱动决策的核心技术,而Java作为企业级开发的主流语言,其在机器学习领域的应用也...

    韩顺平java笔记和源码-golang:高朗

    韩顺平java笔记和源码 关于本笔记 这份笔记是笔者自学Golang时的资料总结,结合了很多书籍、博主以及开源作品的内容。 笔者也收到了大量的反馈和建议,笔记仍然会在我的学习旅程中不断更新,绝对不鸽。 很多章节仍然...

Global site tag (gtag.js) - Google Analytics