﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-程序人生</title><link>http://www.blogjava.net/qingfeng/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 10:32:54 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 10:32:54 GMT</pubDate><ttl>60</ttl><item><title>MDA(3)</title><link>http://www.blogjava.net/qingfeng/archive/2005/04/15/3315.html</link><dc:creator>清风</dc:creator><author>清风</author><pubDate>Fri, 15 Apr 2005 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/qingfeng/archive/2005/04/15/3315.html</guid><wfw:comment>http://www.blogjava.net/qingfeng/comments/3315.html</wfw:comment><comments>http://www.blogjava.net/qingfeng/archive/2005/04/15/3315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qingfeng/comments/commentRss/3315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qingfeng/services/trackbacks/3315.html</trackback:ping><description><![CDATA[<A href="http://www.kcomsoft.com/Article47.htm">http://www.kcomsoft.com/Article47.htm</A><BR>OMG的构想是将目前的开发行为提升到更高的抽象层级--<STRONG>分析模型</STRONG>级，把针对特定计算平台的编码工作交由机器自动完成，这样的情况下，业务逻辑与实现技术被成功地解耦，二者相对独立变化，因此模型的价值在包容已有技术的条件下被最大化。这种目的根源于软件开发的现状，在传统的软件开发方法中，随着项目的进展，设计阶段产生的UML模型和代码之间的同步变得越来越困难--代码为了应付新增加的需求和新产生的想法而不断变化，模型却一直停留在原地不动，这使得模型在一段时间之后就失去了它的价值。OMG提出了一个最根本的解决方案--<STRONG>在MDA中，模型不再是一种辅助工具，而是开发过程的产品</STRONG>。一个完整的MDA应用程序包含： <BR>　　<STRONG>一个权威的PIM；<BR>　　一个或者多个PSM；<BR>　　一个或者多个完整的实现 － 开发人员决定支持的所有平台上的应用程序实现。</STRONG> <BR>　　MDA在目前技术的基础上，分离出了两个抽象级别的模型：<STRONG>PIM</STRONG>（Platform Independent Model 平台无关模型）和<STRONG>PSM</STRONG>（Platform Specialize Mode 平台相关模型），PIM是一个纯粹的不考虑实现技术的分析模型，而PSM可以视为一个基于特定实现技术，比如J2EE的设计模型。工程师们只需要建立表达业务逻辑的PIM，剩下的工作都将由MDA引擎自动完成。描述业务逻辑的PIM将具有长久的价值，而针对特定平台的PSM则可能会随着平台技术的进步而快速地迁移。在MDA开发过程中，系统的开发工作的最终产品是PIM，从PIM到PSM及至代码实现都是由第三方的自动化工具来完成的。 <BR>　　为了实现MDA这一宏大构想，OMG制定了一系列的标准： <BR>　　 UML：<STRONG>UML被MDA用来描述各种模型</STRONG>。它并不是为MDA而生，但是作为目前最为风行的建模语言，UML已经占据了全球建模语言领域90％的市场份额，成为了建模语言事实上的标准，因此OMG将它作为MDA技术的基础是自然而然的明智选择。它是MDA的基础，也是MDA最有力的武器。 <BR>　　 MOF：<STRONG>MOF（Meta Object Facility 元对象机制）是比UML更高层次的抽象</STRONG>，它的目的是为了描述UML的扩展或者其它未来可能出现的类UML的建模语言。由此我们可以看到OMG的"野心"，虽然MOF也不是为MDA而生的，但是我们可以体味到OMG的工程师们良苦的用心和长远的目光。 <BR>　　 XMI：<STRONG>XMI（XML-based metadata Interchange）是基于XML的元数据交换</STRONG>。它通过标准化的XML文档格式和DTDs（Document Type Definitions）为各种模型定义了一种基于XML的数据交换格式。这使得作为最终产品的模型可以在各种不同的工具中传递，这一点是非常重要的，它保证了MDA不会在打破了一种束缚之后再被加上一层新的束缚。 <BR>　　 CWM：CWM（Common Warehouse Metamodel 公共仓库元模型）提供了一种数据格式变换的手段，<STRONG>在任意级别的模型上都可以使用CWM来描述两种数据模型之间的映射规则</STRONG>，比如将数据实体从关系数据库变换为XML格式。在MOF的框架下，CWM使得通用的数据模型变换引擎成为可能。 <BR>　　在OMG的蓝图中，UML、MOF、XMI、CWM等一系列标准分别解决了MDA的模型<STRONG>建立</STRONG>、模型<STRONG>扩展</STRONG>、模型<STRONG>交换</STRONG>、模型<STRONG>变换</STRONG>这几个方面的问题。OMG试图通过标准化的定义，扩大MDA的应用范围。同时通过这样一个可扩展的建模语言环境，<STRONG>IT厂商可以自由实现自己的建模语言</STRONG>，以及<STRONG>语言到可执行代码的映射</STRONG>，然而不管怎么样，都必须处于OMG的标准化框架之下。 　　<img src ="http://www.blogjava.net/qingfeng/aggbug/3315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qingfeng/" target="_blank">清风</a> 2005-04-15 15:17 <a href="http://www.blogjava.net/qingfeng/archive/2005/04/15/3315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中间件</title><link>http://www.blogjava.net/qingfeng/archive/2005/04/15/3314.html</link><dc:creator>清风</dc:creator><author>清风</author><pubDate>Fri, 15 Apr 2005 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/qingfeng/archive/2005/04/15/3314.html</guid><wfw:comment>http://www.blogjava.net/qingfeng/comments/3314.html</wfw:comment><comments>http://www.blogjava.net/qingfeng/archive/2005/04/15/3314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qingfeng/comments/commentRss/3314.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qingfeng/services/trackbacks/3314.html</trackback:ping><description><![CDATA[<A href="http://tech.ccidnet.com/pub/article/c287_a201795_p1.html">http://tech.ccidnet.com/pub/article/c287_a201795_p1.html</A><img src ="http://www.blogjava.net/qingfeng/aggbug/3314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qingfeng/" target="_blank">清风</a> 2005-04-15 15:12 <a href="http://www.blogjava.net/qingfeng/archive/2005/04/15/3314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MDA(2)</title><link>http://www.blogjava.net/qingfeng/archive/2005/04/15/3311.html</link><dc:creator>清风</dc:creator><author>清风</author><pubDate>Fri, 15 Apr 2005 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/qingfeng/archive/2005/04/15/3311.html</guid><wfw:comment>http://www.blogjava.net/qingfeng/comments/3311.html</wfw:comment><comments>http://www.blogjava.net/qingfeng/archive/2005/04/15/3311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qingfeng/comments/commentRss/3311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qingfeng/services/trackbacks/3311.html</trackback:ping><description><![CDATA[<P>简单地说，MDA是OMG在模型可执行上的努力，其目的是为了“把建模语言当编程语言来用，而不只是设计语言” 。模型可执行（<STRONG>Executable Model</STRONG>）是MDA的终极目的，为了实现这个目的，OMG制定了模型的精确形式化表示、模型存储以及模型交换方面的各种规约如UML2、MOF（Meta Object Facility，元对象设施）、OCL（Object Constraint Language，对象约束语言）、QVT（Query/View/ Transformations）、XMI（XML Meta-data Interchange，XML元数据交换标准）等等。 <BR>MDA不是某一种具体的技术，也不是一种具体的方法论 ，它是包含了诸多规约的一个集合，是OMG提出的在模型驱动开发方面的一个总的架构。<BR><BR>meta-xxx和xxx的关系是class和instance的关系<BR>mof中描述的是uml中的元素的model<BR><BR></P><img src ="http://www.blogjava.net/qingfeng/aggbug/3311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qingfeng/" target="_blank">清风</a> 2005-04-15 14:35 <a href="http://www.blogjava.net/qingfeng/archive/2005/04/15/3311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MDA(model driven architecure)</title><link>http://www.blogjava.net/qingfeng/archive/2005/04/15/3304.html</link><dc:creator>清风</dc:creator><author>清风</author><pubDate>Fri, 15 Apr 2005 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/qingfeng/archive/2005/04/15/3304.html</guid><wfw:comment>http://www.blogjava.net/qingfeng/comments/3304.html</wfw:comment><comments>http://www.blogjava.net/qingfeng/archive/2005/04/15/3304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qingfeng/comments/commentRss/3304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qingfeng/services/trackbacks/3304.html</trackback:ping><description><![CDATA[<A href="http://www-128.ibm.com/developerworks/cn/rational/r-mda/index.html">http://www-128.ibm.com/developerworks/cn/rational/r-mda/index.html</A><img src ="http://www.blogjava.net/qingfeng/aggbug/3304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qingfeng/" target="_blank">清风</a> 2005-04-15 11:19 <a href="http://www.blogjava.net/qingfeng/archive/2005/04/15/3304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OMG的OCL（对象约束语言object constraint language）</title><link>http://www.blogjava.net/qingfeng/archive/2005/04/15/3303.html</link><dc:creator>清风</dc:creator><author>清风</author><pubDate>Fri, 15 Apr 2005 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/qingfeng/archive/2005/04/15/3303.html</guid><wfw:comment>http://www.blogjava.net/qingfeng/comments/3303.html</wfw:comment><comments>http://www.blogjava.net/qingfeng/archive/2005/04/15/3303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qingfeng/comments/commentRss/3303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qingfeng/services/trackbacks/3303.html</trackback:ping><description><![CDATA[<A href="http://www.donews.net/shanyou/archive/2004/09/30/115378.aspx">http://www.donews.net/shanyou/archive/2004/09/30/115378.aspx</A><img src ="http://www.blogjava.net/qingfeng/aggbug/3303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qingfeng/" target="_blank">清风</a> 2005-04-15 11:17 <a href="http://www.blogjava.net/qingfeng/archive/2005/04/15/3303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 基础--线程</title><link>http://www.blogjava.net/qingfeng/archive/2005/04/08/3002.html</link><dc:creator>清风</dc:creator><author>清风</author><pubDate>Fri, 08 Apr 2005 08:41:00 GMT</pubDate><guid>http://www.blogjava.net/qingfeng/archive/2005/04/08/3002.html</guid><wfw:comment>http://www.blogjava.net/qingfeng/comments/3002.html</wfw:comment><comments>http://www.blogjava.net/qingfeng/archive/2005/04/08/3002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qingfeng/comments/commentRss/3002.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qingfeng/services/trackbacks/3002.html</trackback:ping><description><![CDATA[1.对于访问某个关键共享资源的<STRONG>所有</STRONG>方法，必须把它们<STRONG>都</STRONG>设为synchronized.<BR><BR>2.一个线程可以有四种状态：<BR>(1) 新（New）：线程对象已经创建，但尚未启动，所以不可运行。<BR>(2) 可运行（Runnable）：意味着一旦时间分片机制有空闲的CPU周期提供给一个线程，那个线程便可立即开始运行。因此，线程可能在、也可能不在运行当中，但一旦条件许可，没有什么能阻止它的运行——它既没有“死”掉，也未被“堵塞”。<BR>(3) 死（Dead）：从自己的run()方法中返回后，一个线程便已“死”掉。亦可调用stop()令其死掉，但会产生一个违例——属于Error的一个子类（也就是说，我们通常不捕获它）。记住一个违例的“掷”出应当是一个特殊事件，而不是正常程序运行的一部分。所以不建议你使用stop()（在Java 1.2则是坚决反对）。另外还有一个destroy()方法（它永远不会实现），应该尽可能地避免调用它，因为它非常武断，根本不会解除对象的锁定。<BR>(4) 堵塞（Blocked）：线程可以运行，但有某种东西阻碍了它。若线程处于堵塞状态，调度机制可以简单地跳过它，不给它分配任何CPU时间。除非线程再次进入“可运行”状态，否则不会采取任何操作。<BR><BR>3.线程被堵塞可能是由下述五方面的原因造成的：<BR>(1) 调用sleep(毫秒数)，使线程进入“睡眠”状态。在规定的时间内，这个线程是不会运行的。<BR>(2) 用suspend()暂停了线程的执行。除非线程收到resume()消息，否则不会返回“可运行”状态。<BR>(3) 用wait()暂停了线程的执行。除非线程收到nofify()或者notifyAll()消息，否则不会变成“可运行”（是的，这看起来同原因2非常相象，但有一个明显的区别是我们马上要揭示的）。<BR>(4) 线程正在等候一些IO（输入输出）操作完成。<BR>(5) 线程试图调用另一个对象的“同步”方法，但那个对象处于锁定状态，暂时无法使用。<BR><BR>4.对于Java 1.2，应注意suspend()和resume()已获得强烈反对，因为suspend()包含了对象锁，所以极易出现“死锁”现象。<BR><BR><BR><img src ="http://www.blogjava.net/qingfeng/aggbug/3002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qingfeng/" target="_blank">清风</a> 2005-04-08 16:41 <a href="http://www.blogjava.net/qingfeng/archive/2005/04/08/3002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一次blog</title><link>http://www.blogjava.net/qingfeng/archive/2005/04/08/2988.html</link><dc:creator>清风</dc:creator><author>清风</author><pubDate>Fri, 08 Apr 2005 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/qingfeng/archive/2005/04/08/2988.html</guid><wfw:comment>http://www.blogjava.net/qingfeng/comments/2988.html</wfw:comment><comments>http://www.blogjava.net/qingfeng/archive/2005/04/08/2988.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qingfeng/comments/commentRss/2988.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qingfeng/services/trackbacks/2988.html</trackback:ping><description><![CDATA[<P>做了多年的programmer，今天第一次blog，很兴奋！<BR>现在刚换了一份工作，还没报到，学习中......，发现了自己很多基础的东西不会，汗颜。在看thinking in java,仍然有新的收获，确实经典，也说明自己的底子很薄，努力！<BR></P><img src ="http://www.blogjava.net/qingfeng/aggbug/2988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qingfeng/" target="_blank">清风</a> 2005-04-08 11:35 <a href="http://www.blogjava.net/qingfeng/archive/2005/04/08/2988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>