`
ihuashao
  • 浏览: 4725421 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Java分布式应用迫切需要“大统一”理论

阅读更多
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 分布式应用程序设计

    Java 分布式应用程序设计是构建大型、可扩展和高...以上只是Java分布式应用程序设计的一些核心知识点,实际应用中还会涉及到缓存管理、数据库分库分表、安全认证、限流熔断等多个方面,需要不断学习和实践来提升技能。

    Java分布式应用学习笔记01分布式Java应用和SOA

    ### 实现分布式Java应用的挑战与解决方案 尽管Java提供了丰富的库和技术栈来支持分布式应用的开发,但在实际应用中仍面临许多挑战,例如: - **一致性问题**:在分布式系统中保持数据的一致性是一项复杂任务,需要...

    Java分布式应用学习笔记

    分布式Java应用的核心在于组件之间的远程方法调用(Remote Procedure Call, RPC)。Java RMI(Remote Method Invocation)是Java提供的一种原生的RPC机制,允许对象在不同的JVM之间进行交互。另外,Java还提供了...

    java分布式事务demo

    本示例("java分布式事务demo")很可能是为了演示如何在Java应用程序中实现这一功能。 分布式事务处理通常涉及ACID(原子性、一致性、隔离性和持久性)原则,这些原则是传统数据库事务管理的基础。在Java中,实现...

    java分布式系统架构源码

    Java分布式系统架构是一种将应用程序分布在多个计算节点上运行的技术,以提高系统的可伸缩性、容错性和性能。源码分析对于理解这种架构至关重要,尤其是对于开发者来说,它提供了深入学习和自定义系统的机会。本资源...

    java分布式应用程序设计 pdf+源码

    在IT行业中,Java分布式应用程序设计是一项关键技能,尤其在大型企业级系统开发中不可或缺。本资源包含一本名为“JAVA分布式程序设计”的电子书以及相关的源码示例,旨在帮助开发者深入理解和实践Java在分布式环境中...

    大型分布式系统java应用

    本文将深入探讨大型分布式系统中的Java应用,包括其核心概念、技术框架以及实现策略。 首先,我们要理解什么是分布式系统。分布式系统是由多台独立的计算机通过网络进行通信和协作,共同完成一个任务的系统。这些...

    Java【分布式】学习笔记01分布式Java应用

    从给定的文件信息来看,标题和描述都指向了“Java分布式学习笔记01分布式Java应用”,这显然是关于Java在分布式环境下的应用和技术的学习资料。虽然提供的部分内容由于格式问题难以直接解析,但我们可以根据标题、...

    Java分布式架构设计实战视频课程(2022最新版,13章全)

    Java分布式架构设计实战课程是2022年最新的学习资源,涵盖了从基础到高级的全方位内容,旨在帮助开发者深入理解并掌握Java在分布式系统中的应用。这套课程共有13个章节,每个章节都针对特定的分布式架构技术或概念...

    分布式Java应用基础与实践pdf

    分布式Java应用基础与实践是Java开发领域中的一个重要主题,它涉及到如何通过网络将多个独立的计算机节点连接起来,协同处理任务,以实现系统的高可用性、高性能和可伸缩性。在Java中,分布式系统主要依赖于一些核心...

    java分布式程序设计

    java分布式程序设计 java分布式程序设计 java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计java分布式程序设计

    java 分布式应用程序设计.rar

    在Java中实现分布式应用程序通常需要理解并掌握一系列关键技术和概念,包括但不限于网络编程、远程方法调用(RMI)、Java命名和目录接口(JNDI)、Java消息服务(JMS)以及分布式数据存储等。 1. **Java RMI...

    分布式Java应用:基础与实践(分布式Java应用知识点全景图)

    本书介绍了编写分布式Java应用涉及的众多知识点,分为了基于Java实现网络通信、RPC;基于SOA实现大型分布式Java应用;编写高性能Java应用;构建高可用、可伸缩的系统四个部分,七章内容来进行介绍,在这一本不算厚的...

    java wrapper 分布式应用组件

    java wrapper 分布式应用组件、可以把java程序以服务的形式分布于不同的服务器

    Java分布式实战指南.pdf

    《Java分布式实战指南》这本书详细介绍了如何构建一个完整的Java分布式系统,主要涵盖了技术选型、分布式基础设施环境构建以及项目运营与部署环境等多个方面。在Java微服务领域,它提供了丰富的实践经验和理论指导。...

    Java分布式应用

    本书章节包括分布式java应用,大型分布式java应用与SOA,深入理解jvm,分布式应用与sun jdk类库,性能调优,构件高可用的系统等,同时也适合面试考察的知识点。

Global site tag (gtag.js) - Google Analytics