Java的现状的确是混乱(或者叫“自由”,呵呵)得可以。老话说“给猫剥皮不止一种办法”,Java再次验证了这一点。为了任何一个目的,你都可以有n(n通常大于3)种办法。混乱的代价有两点:(1)更难形成整体性的理解;(2)选择成本更高。J2EE 1.4把一些常用的特性(例如XML解析、JAX-RPC)都放到了specification里,希望对此现状有所帮助吧。
——————————————————————
Down on the (Compute) Farm
A Grand Unified Theory of Distributed Applications for Java
by Van Simmons
June 19, 2003
Summary
Java is in need of a sort of "Grand Unified Theory" for distributed applications. EJB, Jini, JXTA, and JMS have more in common than just the letter J, though you wouldn't know it from reading the specs.
So what do you mean Grand Unified Theory?
Last week, for the first time since 1998, I made it out to San Francisco for JavaONE. The intervening years have seen the crest of the tech wave that had only been building back in 1997 when I attended my first J1. The changed atmosphere of this edition produced a vague feeling that there was some thread running through the whole thing that I just wasn't picking out. Then, while listening intently to a conference session concerning a JSR with which I was totally unfamiliar, it dawned on me that my unfamiliarity with the topic at hand was itself the key factor.
Back in '98, I felt that I understood Java as a technology. There was no session that year that I could attend where I didn't have at least a passing familiarity with the topic and some exposure to the API involved - and I didn't consider myself at all special in that regard. JavaDoc and O'Reilly books on Java were just the stuff you read in your spare time if you were a geek. But things have changed since then.
There are now so many pieces of the Java specification that it is entirely possible to work heavily with one API and still be completely incapable of explaining how to relate that API to another one which has some overlapping features. Don't believe me? Try this - in one nice, neat list describe the decision tree you'd use to determine whether to house an object in a distributed application in a) an EJB container, b) a JXTA peer group, c) a Jini service or d) broadcast it in a JMS topic. I've certainly tried it and the result somehow left me feeling stupid.
My thesis for the next few posts to this blog will be that Java is in need of a Grand Unified Theory for distributed applications that would enable me to write just such a list.
Let me assure you that I don't have the elements of the list predetermined and that I'd greatly appreciate feedback from the community on what I'm missing. (I should note that I derived a great deal of guilty satisfaction recently from hearing some of the people who wrote the APIs mentioned above say that they really weren't able to make such a list either ).
Sounds pretty vague to me
This particular musing is not a hazy abstraction for me. It is directly related to problems I face in a current project and that I've simply got to solve in the coming months.
I'm building out a compute farm for a coarse-grain, numerically intensive problem that has got to dramatically scale up. ( I need at least a 50X increase in throughput over the current multi-threaded app). A distributed technology that allows me to quickly add new hardware at near-linear cost per compute cycle is the only way I see that we can make that happen. So I hope to be mixing blades, 8-way symmetric servers and maybe some desktops into the computational mix, scattering those resources across several different locations and trying to do it all on the cheap.
I've already made certain technology choices, so I can at least begin to fill out my decision tree. Configuration, control and logging of the entire beast is going to be vested in objects living in a J2EE container, so that I can take advantage of JMX. Moving the computational tasks around is going to be a Jini/JavaSpaces responsibility. (Marrying those two technologies in a reasonable way is the subject of much hacking at present.) JXTA offers some interesting notions that I intend to explore for sharing spaces across sites. And finally, JMS is of interest because there could be real-time data which every computation will need to be aware of. How all of this eventually will shake out is still somewhat mysterious to me, though.
Okay, so its one interesting facet of a tiny grain of sand on the computing beach
I've read Jim Waldo's posts to this site with interest, because I agree with him that a) this sort of scalable, distributed application is going to a Very Important Trend in computing and b) this will require some form of mobile code. I've certainly mistaken the problem I happen to be working on for the Gulf Stream of computing currents before, so I could be way off here - but if I am, this is still the most fun I've had writing code in a while.
Hopefully I can get some more details and thoughts posted in the next week or two. In the meantime, I look forward to hearing the thoughts of others on unifying Java distributed technologies into a broader framework.
Talk Back!
Have an opinion? Readers have already posted 10 comments about this weblog entry. Why not add yours?
RSS Feed
If you'd like to be notified whenever Van Simmons adds a new entry to his weblog, subscribe to his RSS feed.
About the Blogger
|
Most who've heard of Van Simmons before will remember him in his former role as President of VNP Software. Since 1990, Van has usually made a living architecting, designing, writing and generally being frustrated with large systems for Wall Street firms. Originally he hacked his way about these in Objective-C on the old NeXT platform, but starting in 1996, he realized that he was flogging a dead horse and transferred his allegiance to the (then) immature Java platform. These days, Van is an employee of a firm with a lot of numbers to crunch, so he's spending his days trying to figure out how to get an hours worth of computation done in a minute of elapsed time. Venting, musing and guffawing on this topic is what he plans to write about. |
This weblog entry is Copyright © 2003 Van Simmons. All rights reserved.
分享到:
相关推荐
Java 分布式应用程序设计代码 对Java 分布式应用程序进行了解
Java 分布式应用程序设计
Java分布式应用学习笔记01分布式Java应用和SOA
Java分布式应用学习笔记
java分布式应用总结.pdf
java分布式事务demo
Java分布式面试题汇总,2022年最新,143页,祝您斩获高薪offer!Java分布式面试题汇总,2022年最新,143页,祝您斩获高薪offer!Java分布式面试题汇总,2022年最新,143页,祝您斩获高薪offer!Java分布式面试题汇总,...
大型分布式系统java应用
java分布式应用程序设计电子书以及各章节示例源码
Java分布式学习笔记01分布式Java应用
java分布式程序设计 java分布式程序设计 java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计
本书介绍了编写分布式Java应用涉及的众多知识点,分为了基于Java实现网络通信、RPC;基于SOA实现大型分布式Java应用;编写高性能Java应用;构建高可用、可伸缩的系统四个部分,七章内容来进行介绍,在这一本不算厚的...
分布式java应用完整版分布式java应用分布式java应用
java wrapper 分布式应用组件、可以把java程序以服务的形式分布于不同的服务器
java 分布式系统架构源码,带数据库执行脚本,可直接导入,部署运行
Java分布式应用学习笔记07线程池应用
本书章节包括分布式java应用,大型分布式java应用与SOA,深入理解jvm,分布式应用与sun jdk类库,性能调优,构件高可用的系统等,同时也适合面试考察的知识点。