﻿<?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-&lt;center&gt;&lt;h1&gt;&lt;strong&gt;&lt;font color="#8088B7"&gt;&lt;em&gt;在幸福中痛苦的挣扎&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/h1&gt;&lt;/center&gt;-随笔分类-其它相关</title><link>http://www.blogjava.net/soft/category/15407.html</link><description>&lt;center&gt;&lt;font color="black" size="3"&gt;专注于效率  专注于价值&lt;/font&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;  
&lt;font size="5"&gt;&lt;b&gt;书法.JAVA BLOG&lt;/b&gt;&lt;/font&gt;&lt;/center&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 06:36:58 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 06:36:58 GMT</pubDate><ttl>60</ttl><item><title>图片编辑器的实现--基于JAVA技术</title><link>http://www.blogjava.net/soft/archive/2006/11/21/82618.html</link><dc:creator>书法</dc:creator><author>书法</author><pubDate>Tue, 21 Nov 2006 14:08:00 GMT</pubDate><guid>http://www.blogjava.net/soft/archive/2006/11/21/82618.html</guid><wfw:comment>http://www.blogjava.net/soft/comments/82618.html</wfw:comment><comments>http://www.blogjava.net/soft/archive/2006/11/21/82618.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/soft/comments/commentRss/82618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/soft/services/trackbacks/82618.html</trackback:ping><description><![CDATA[		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt" align="left">
				<font size="2">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">一、</span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">技术概述</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10.5pt; mso-char-indent-count: 1.0">
				<font size="2">
						<span lang="EN-US">Java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">完全可以出色的实现多媒体的编辑与处理，包括图象的处理技术（</span>
						<span lang="EN-US">JGraph</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）、动画技术（</span>
						<span lang="EN-US">JFlash</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）、声音视频技术（</span>
						<span lang="EN-US">JMF</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）等等；</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10.5pt; mso-char-indent-count: 1.0">
				<font size="2">
						<span lang="EN-US">Java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对图象处理进行了很好的支持，通过</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供的类，我们完全可以对图象进行各种常见的操作和变换；</span> </font>
				<font face="宋体">
						<font size="2">    </font>
						<span lang="EN-US">
								<br />
								<font size="2">      <span style="mso-list: Ignore">1、</span></font>
						</span>
						<span lang="EN-US">
								<font size="2">java图形图象处理所用到的相关类与接口：</font>
						</span>
				</font>
				<font size="2">   </font>
				<span lang="EN-US">
						<br />
						<font size="2">             </font>
						<font face="宋体">
								<font size="2">java.awt.color、java.awt.grahpics、java.awt.image、          <br />      java.awt.image.bufferedimage、<span style="mso-bidi-font-weight: bold">java.awt.image.LookupOp</span>、</font>
								<font size="2">
										<span style="mso-bidi-font-weight: bold">     <br />      java.awt.image.ConvolveOp</span>、<span style="mso-bidi-font-weight: bold">java.awt.image.AffineTransformOp</span>、<br />      bufferedimageop接口及其实现类等；</font>
						</font>
						<br />
				</span>
				<br />
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 36.0pt">
				<font size="2">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">2、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
						</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图形图象处理可以完成的功能：</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 45pt">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图象文件的打开（浏览）与保存（支持</span>
						<span lang="EN-US">jpg</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US">jpeg</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US">gif</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US">png</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等）、放大镜操作、旋转与镜像操作、反色和其他反色、黑白色阈值处理、亮度调整、缩放显示、边缘化、图形的锐化和钝化、其它功能等；</span>
						<span lang="EN-US">.</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 36pt; TEXT-INDENT: -18pt; mso-list: l0 level2 lfo1; tab-stops: list 36.0pt">
				<font size="2">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">3、<span style="FONT: 7pt 'Times New Roman'">  </span></span>
						</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">图形图象处理应用范围及限制：</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 47.25pt; mso-char-indent-count: 4.5">
				<font size="2">
						<span lang="EN-US">……………….<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<o:p> </o:p>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<o:p> </o:p>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">
				<font size="2">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">二、</span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实例演示介绍</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span lang="EN-US">c/s<span style="mso-spacerun: yes">  </span>Demo<span style="mso-spacerun: yes">  </span></span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（<a href="http://www.blogjava.net/Files/soft/javaDrawer.rar">下载</a></span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">略</span>
						<span lang="EN-US">….</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<o:p> </o:p>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<o:p> </o:p>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo1; tab-stops: list 21.0pt">
				<font size="2">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">三、</span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于使用</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
						<span lang="EN-US">.net</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">技术实现图片编辑的分析与比较</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
						<span lang="EN-US">.net</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的争论从来没有停止过。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span lang="EN-US">
								<span style="mso-spacerun: yes">    </span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开放性是</span>
						<span lang="EN-US">Java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">生命力的源泉，它不属于一个单独的公司，尽管</span>
						<span lang="EN-US">Sun</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在其中起着关键性的作用。众多世界级的公司，例如</span>
						<span lang="EN-US">IBM</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、甲骨文、</span>
						<span lang="EN-US">BEA</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等等，都对</span>
						<span lang="EN-US">Java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都给予完全的支持，正是这样，</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的存在并继续产生一系列不平凡的影响是无庸置疑的；</span>
				</font>
				<font size="2">
						<span lang="EN-US">    <br />   <span style="mso-spacerun: yes">  </span></span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">出自微软的</span>
						<span lang="EN-US">.NET</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最大的特点就是容易上手。花上两三个月时间，你就可以像模像样地当软件工程师了。相比之下，</span>
						<span lang="EN-US">Java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就不那么容易。而且，从软件技术的深度来看，</span>
						<span lang="EN-US">.NET</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之中有没有分布式事务处理，这个问题仍然被许多资深的软件人员所质疑</span>
						<span lang="EN-US">….</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不过，是同意</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的开发框架模式及诸多优秀开源组件更有价值，还是要更注重</span>
						<span lang="EN-US">.net</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的开发效率，这要根据企业以及项目自身来抉择，如果对于一个有着深厚的开发积累或者打算在相当一段时间长期使用的项目来说，没有采用</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发平台的确是一个不太合理的事情，因为从长期看来，新的平台系统的混合使用必然会造成一些产品的不同平台的重复开发，而另一方面因为</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">独有的设计模式框架，会让一个</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序的后期维护变得相当简单容易，由此看来，它的开发成本并不一定会比其它语言的开发费用要高。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">此前，</span>
						<span lang="EN-US">Jupitor</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">公司发布的一个报告显示，</span>
						<span lang="EN-US">62%</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的中小企业已经采用了</span>
						<span lang="EN-US">.NET</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，而</span>
						<span lang="EN-US">36%</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的企业则采用基于</span>
						<span lang="EN-US">Java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
						<span lang="EN-US">IBM   WebSphere</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等服务平台。包括微软公司开发业务的负责人约翰·蒙哥马利也曾经表示：“</span>
						<span lang="EN-US">Java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">未来将会变成底层的编程框架，没有人可以通过它赚钱，它将会变成一个普通商品。”按照他的预测，明天的</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或许就相当于今天的</span>
						<span lang="EN-US">C</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">；</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span lang="EN-US">
								<span style="mso-spacerun: yes">    </span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在图形图片的处理领域内，有许多种不同的编程方式，就</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">技术而言，可以直接调用</span>
						<span lang="EN-US">java api</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现，同时在</span>
						<span lang="EN-US">java </span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开源社区也有不少开源的组件，从效率上考虑，显然后者是一种更好的选择，并且相信在</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">领域内以后一定会有更多更优秀的开放性源码出现，这就是</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的活力</span>
						<span lang="EN-US">java</span>
				</font>
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的优势；<br /></span>
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">四、</span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设想</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -42pt; mso-char-indent-count: -4.0">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方案</span>
						<span lang="EN-US">1</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
						<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?>
						<st1:city>
								<st1:place>
										<span lang="EN-US">Ajax</span>
								</st1:place>
						</st1:city>
						<span lang="EN-US">+java </span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -10.5pt; mso-char-indent-count: -1.0; mso-para-margin-left: 3.0gd">
				<font size="2">
						<span lang="EN-US">
								<span style="mso-spacerun: yes"> </span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">理由：充分利用</span>
						<span lang="EN-US">Ajax</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">胖客户端、无刷新加载提交数据及异步通信的特征，构造出</span>
						<span lang="EN-US">Internet</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上极速处理图片及照片的体验平台，从而大大减少用户等待页面刷新的烦恼，使客户在充分享受上网的乐趣的同时对公司的产品也留下更为深刻的印象。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -10.5pt; mso-char-indent-count: -1.0; mso-para-margin-left: 3.0gd">
				<font size="2">
						<span lang="EN-US">
								<span style="mso-spacerun: yes">  </span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">优点：继承</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台产品系统无关性、安全性、易维护升级、开放性等所有优点；</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -42pt; mso-char-indent-count: -4.0">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方案</span>
						<span lang="EN-US">2</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：多语言平台开发模式</span>
						<span lang="EN-US">
								<span style="mso-spacerun: yes">  </span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">平台实现在线编辑图片的功能而以其它语言平台（如</span>
						<span lang="EN-US">.net+GAI</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）实现本地图片处理功能</span>
						<span lang="EN-US">
								<span style="mso-spacerun: yes">  </span>
						</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">理由：语言本身无所谓好不好，它只是一个工具，它们都是为产品服务的，而产品又是为客户服务的，所以采用什么平台来开发产品最终是用户说了算，</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的出现本身就是基于</span>
						<span lang="EN-US">Internet</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的，因此</span>
						<span lang="EN-US">B/S</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式下采用</span>
						<span lang="EN-US">java</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">技术，而以其它语言开发用户桌面应用程序，扬长避短，不但可以有效减小风险，而且产品开发周期也会快很多。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">优点：风险小，效率高。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">
								<font size="2">                                                               </font>
						</span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd">
				<span lang="EN-US">
						<span style="mso-spacerun: yes">
								<font size="2">                                                       </font>
						</span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: 288.75pt; mso-char-indent-count: 27.5; mso-para-margin-left: 4.0gd">
				<font size="2">
						<span lang="EN-US">
								<span style="mso-spacerun: yes">                                                               copyright@  </span>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">彭书法</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 42pt; mso-para-margin-left: 4.0gd">
				<font size="2">
						<span lang="EN-US">
								<span style="mso-spacerun: yes">                                                                                     </span>
						</span>
				</font>
				<font size="2">
				</font>
		</p>
		<font face="宋体">
		</font>
<img src ="http://www.blogjava.net/soft/aggbug/82618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soft/" target="_blank">书法</a> 2006-11-21 22:08 <a href="http://www.blogjava.net/soft/archive/2006/11/21/82618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNI技术在嵌入式软件开发中的应用学习笔记之三</title><link>http://www.blogjava.net/soft/archive/2006/11/13/80789.html</link><dc:creator>书法</dc:creator><author>书法</author><pubDate>Sun, 12 Nov 2006 20:25:00 GMT</pubDate><guid>http://www.blogjava.net/soft/archive/2006/11/13/80789.html</guid><wfw:comment>http://www.blogjava.net/soft/comments/80789.html</wfw:comment><comments>http://www.blogjava.net/soft/archive/2006/11/13/80789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/soft/comments/commentRss/80789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/soft/services/trackbacks/80789.html</trackback:ping><description><![CDATA[		<p>
				<font size="2">通过前两篇文章的介绍，现在给出一个JNI的HelloWrold应用例子，用于抛砖引玉：<br /><br />步骤：<br /><font color="#666666" size="3"><font color="#000000">       a.</font><font size="2"><font color="#000000">编写带有native声明的方法的java类<br />　　<br />　　b.使用javac命令编译所编写的java类<br />　　<br />　　c.使用javah ?jni java类名生成扩展名为h的头文件<br />　　<br />　　d.使用C/C++实现本地方法<br />　　<br />　　e.将C/C++编写的文件生成动态连接库<br />　　<br />　　f. 运行 ok<br /></font><br /></font></font>详细介绍：<br /><font color="#000000">      </font><font color="#000000">1) 编写java程序：<br />　　<br />　　这里以HelloWorld为例。<br />　　<br />　　代码1：<br />　　<br />　　class HelloWorld {<br />　　public native void displayHelloWorld();<br />　　<br />　　static {<br />　　System.loadLibrary("hello");<br />　　}<br />　　<br />　　public static void main(String[] args) {<br />　　new HelloWorld().displayHelloWorld();<br />　　}<br />　　}<br />　　<br />　　声明native方法：如果你想将一个方法做为一个本地方法的话，那么你就必须声明改方法为native的，并且不能实现。其中方法的参数和返回值在后面讲述。<br />　　<br />　　Load动态库：System.loadLibrary("hello");加载动态库（我们可以这样理解：我们的方法displayHelloWorld()没有实现，但是我们在下面就直接使用了，所以必须在使用之前对它进行初始化）这里一般是以static块进行加载的。同时需要注意的是System.loadLibrary();的参数“hello”是动态库的名字。<br />　　<br />　　main()方法<br />　　<br />　　2) 编译没有什么好说的了<br />　　<br />　　javac HelloWorld.java<br />　　<br />　　3) 生成扩展名为h的头文件<br />　　<br />　　javah ?jni HelloWorld<br />　　<br />　　头文件的内容：<br />　　/* DO NOT EDIT THIS FILE - it is machine generated */<br />　　#include <br />　　/* Header for class HelloWorld */<br />　　<br />　　#ifndef _Included_HelloWorld<br />　　#define _Included_HelloWorld<br />　　#ifdef __cplusplus<br />　　extern "C" {<br />　　#endif<br />　　/*<br />　　* Class:　　 HelloWorld<br />　　* Method:　　displayHelloWorld<br />　　* Signature: ()V<br />　　*/<br />　　JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld<br />　　(JNIEnv *, jobject);<br />　　<br />　　#ifdef __cplusplus<br />　　}<br />　　#endif<br />　　#endif<br />　　<br />　　（这里我们可以这样理解：这个h文件相当于我们在java里面的接口，这里声明了一个Java_HelloWorld_displayHelloWorld (JNIEnv *, jobject);方法，然后在我们的本地方法里面实现这个方法，也就是说我们在编写C/C++程序的时候所使用的方法名必须和这里的一致）。<br />　　<br />　　4) 编写本地方法<br />　　<br />　　实现和由javah命令生成的头文件里面声明的方法名相同的方法。<br />　　<br />　　代码2：<br />　　<br />　　1 #include <br />　　2 #include "HelloWorld.h"<br />　　3 #include <br />　　4 JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)<br />　　{<br />　　printf("Hello world!\n");<br />　　return;<br />　　}<br />　　<br />　　注意代码2中的第1行，需要将jni.h（该文件可以在%JAVA_HOME%/include文件夹下面找到）文件引入，因为在程序中的JNIEnv、jobject等类型都是在该头文件中定义的；另外在第2行需要将HelloWorld.h头文件引入（我是这么理解的：相当于我们在编写java程序的时候，实现一个接口的话需要声明才可以，这里就是将HelloWorld.h头文件里面声明的方法加以实现。当然不一定是这样）。然后保存为HelloWorldImpl.c就ok了。<br />　　<br />　　5) 生成动态库<br />　　<br />　　这里以在Windows中为例，需要生成dll文件。在保存HelloWorldImpl.c文件夹下面，使用VC的编译器cl成。<br />　　<br />　　cl -I%java_home%\include -I%java_home%\include\win32 -LD HelloWorldImp.c -Fehello.dll<br />　　<br />　　注意：生成的dll文件名在选项-Fe后面配置，这里是hello，因为在HelloWorld.java文件中我们loadLibary的时候使用的名字是hello。当然这里修改之后那里也需要修改。另外需要将-I%java_home%\include -I%java_home%\include\win32参数加上，因为在第四步里面编写本地方法的时候引入了jni.h文件。<br />　　<br />　　6) 运行程序<br />　　<br />　　java HelloWorld就ok了。<br /></font><br />        如有问题，欢迎讨论交流。^_^<br /><br /></font>
		</p>
<img src ="http://www.blogjava.net/soft/aggbug/80789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soft/" target="_blank">书法</a> 2006-11-13 04:25 <a href="http://www.blogjava.net/soft/archive/2006/11/13/80789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNI技术在嵌入式软件开发中的应用学习笔记之二</title><link>http://www.blogjava.net/soft/archive/2006/11/13/80788.html</link><dc:creator>书法</dc:creator><author>书法</author><pubDate>Sun, 12 Nov 2006 20:16:00 GMT</pubDate><guid>http://www.blogjava.net/soft/archive/2006/11/13/80788.html</guid><wfw:comment>http://www.blogjava.net/soft/comments/80788.html</wfw:comment><comments>http://www.blogjava.net/soft/archive/2006/11/13/80788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/soft/comments/commentRss/80788.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/soft/services/trackbacks/80788.html</trackback:ping><description><![CDATA[		<font size="2">接上：<br />(1)编写Java类代码<br />    其中，需要JNI实现的方法应当用native关键字声明。在该类中，用System．1oadLibrary()方法加载需要的动态链接库。关键代码如下：<br />    ／／Compute.java<br />    public class Compute{<br />    public native double comp (double params);<br />    static{<br />    ／／调用动态链接库<br />    System．loadLibrary(“mathlib”)；<br />    }<br />    <br />(2)编译成字节代码<br />    在这个过程中，由于采用了native关键字声明，Java编译器会忽视没有代码体的JNI方法部分。<br />   <br /> (3)生成相关JNI方法的头文件<br />    这个过程的实现一般是通过利用jlavah-jni * class生成的，也可以手工生成该文件；但是由于</font>
		<font size="2">Java</font>
		<font size="2">虚拟机是根据一定的命名规范完成对JNI方法的调用，所以手工编写头文件需要特别小心。<br />    上述文件产生的头文件部分代码如下：<br />    ／／Compute.h<br />    ;<br />    extern“C”{<br />    JNIEXPORT jdoubleJNICALL Java_Compute_comp(JNI-Env *, jobject, jdoubleArray)；<br />    ;<br />    JNI函数名称分为三部分：首先是Java关键字，供Java虚拟机识别；然后是调用者类名称(全限定的类名，其中用下划线代替名称分隔符)；最后是对应的方法名称，各段名称之间用下划线分割。<br />    JNI函数的参数也由三部分组成：首先是JNIEnv *,是一个指向JNI运行环境的指针；第二个参数随本地方法是静态还是非静态而有所不同一一非静态本地方法的第二个参数是对对象的引用，而静态本地方法的第二个参数是对其Java类的引用；其余的参数对应通常Java方法的参数，参数类型需要根据一定规则进行映射。</font>
		<p>
				<br />
				<font size="2">    (4)编写相应方法的实现代码<br />    在编码过程中，需要注意变量的长度问题，例如Java的整型变量长度为32位，而C语言为16位，所以要仔细核对变量类型映射表，防止在传值过程中出现问题。</font>
		</p>
		<p>
				<br />
				<font size="2">    (5)将JNI实现代码编译成动态链接库<br />    编译过程是利用C／C++编译器实现的，当要使用生成的动态链接库时，调用者类中需要显式调用该链接库。<br />    经过上述处理，基本上完成了一个包含本地化方法的Java类的开发。</font>
		</p>
		<p align="left">
				<font size="2">     3 基于JNI的嵌入式手机软件开发实例<br />    下面通过一个实例来描述运用</font>
				<font size="2">JNI技术</font>
				<font size="2">在手机上操纵摄像头，捕捉视频并存储图片的过程。<br />    (1)活动／状态图<br />    图2为捕捉视频并存储图片的活动／状态图</font>
				<img style="WIDTH: 479px; HEIGHT: 603px" height="603" src="http://www.blogjava.net/images/blogjava_net/soft/17148/o_s1.jpg" width="646" />
				<br />
				<br />                                                                                <a title="图二" href="/images/blogjava_net/soft/17148/r_s0.jpg" target="_blank"><font color="#ff0000">点击查看原图</font></a><br /><font size="2">根据图2的活动／状态，具体的对应步骤如下：<br />    ①发起该流程。<br />    ②发起流程后，建立文件用于存储图片。<br />    ③用指针获得分配的缓冲器，用于存储获得的帧。<br />    ④将指针压栈(序列化缓冲器)。由于手机的内存较小，为了防止内存泄漏，Symbian操作系统有一个Cleanup stack的要求，即在使用指针时，用PushL把指针压入栈中，使用完后再用Pop弹出栈．如果在中间调用导致崩溃的函数时果真出现了问题，那么Clean up stack可以通过调用该指针的析构函数回收占用的空间。<br />    ⑤操纵摄像头，捕捉视频，并将图像流从摄像头端传到缓冲器。<br />    ⑥将摄像头内的图像流存入缓冲器内，并将缓冲器内的流转化为文件流，存为jpg格式的文件，将指向缓冲器的指针弹栈。<br />    ⑦在过程⑥中，如果使用完了序列化的缓冲器，则要重新序列化缓冲器，以备后面使用。<br />    ⑧当接收到停止视频捕捉的信号后，关闭文件。<br />    ⑨流程结束。<br /> <br />     (2)运用JNI</font><font size="2">技术</font><font size="2">的视频捕捉<br />    子功能捕捉视频的实现是由操纵摄像头、视频播放(解码器准备)以及建立摄像头和手机之间的连接会话三个活动组成的。其中操纵摄像头是通过调用底层设备的驱动来实现的，需要利用JNI来实现，完成的方法包括准备、建立、删除、销毁摄像头等。视频播放的一系列过程也是通过c++代码来实现的，除了准备、建立、删除、销毁解码器外，还有开始、暂停、停止解码等。建立摄像头和手机之间的连接类似建立客户端和服务器连接，视频流从摄像头传到手机界面是通过多媒体会话来完成的。多媒体<br />会话的建立、关闭、摧毁以及会话建立后的发送、取消、读取数据等也是JNI的应用范畴。<br /></font><font size="2"><br />     结语<br />    主张采用纯Java的人们通常反对本地化代码的使用，认为JNI技术会影响</font><font size="2">程序</font><font size="2">的可移植性和安全性。还有一些人认为，在Java程序执行的过程中调用c／c++程序只是对过去混合编程技术的简单扩展，其实际目的是为了充分利用大量原有的c程序库。<br /></font><br /><font size="2">     其实，不必拘泥于严格的平台独立性限制，因为采用JNI技术只是针对一些严重影响Java性能的代码段。该部分可能只占源程序的极少部分，所以几乎可以不考虑该部分代码在主流平台之间移植的工作量。同时，也不必过分担心类型匹配问题，完全可以控制代码不出现这种错误。此外，也不必担心安全控制问题，因为Java安全模型已扩展为允许非系统类加载和调用本地方法，即如果在Java程序中直接调用c／c++语言产生的机器码，该部分代码的安全性就由Java虚拟机控制。<br /></font><br /><br /></p>
<img src ="http://www.blogjava.net/soft/aggbug/80788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soft/" target="_blank">书法</a> 2006-11-13 04:16 <a href="http://www.blogjava.net/soft/archive/2006/11/13/80788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNI技术在嵌入式软件开发中的应用学习笔记之一</title><link>http://www.blogjava.net/soft/archive/2006/11/13/posoft.html</link><dc:creator>书法</dc:creator><author>书法</author><pubDate>Sun, 12 Nov 2006 19:46:00 GMT</pubDate><guid>http://www.blogjava.net/soft/archive/2006/11/13/posoft.html</guid><wfw:comment>http://www.blogjava.net/soft/comments/80787.html</wfw:comment><comments>http://www.blogjava.net/soft/archive/2006/11/13/posoft.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/soft/comments/commentRss/80787.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/soft/services/trackbacks/80787.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">嵌入式系统是以应用为中心、以计算机技术</font>
				<font size="2">为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式软件</font>
				<font size="2">的基本体系结构包括嵌入式实时操作系统RTOS(RealTime operating Systerrl)、嵌入式设备驱动程序</font>
				<font size="2">、嵌入式应用程序编程接口(中间件)和嵌入式应用程序。</font>
		</p>
		<p>
				<br />
				<font size="2">    现阶段，计算机应用的普及、互联网技术的实用以及纳米微电子技术的突破，正有力推动着21世纪的工业生产、商业活动、科学实验和家庭生活等领域自动化和信息化进程。全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及现代化家居生活，为嵌入式产品造就了崭新而巨大的商机。除了沟通信息高速公路的交换机、路由器和调制解调器，构建计算机集成制造系统(CIMS)所需的数据传输系统DCS(Data Communication System)和机器人以及规模较大的家用汽车电子系统，最有产量效益和时代特征的嵌入式产品应数因特网上的信息家电(information appliances），如网络可视电话、网络游戏机、电子商务、商务通(PDA)、移动电话以及多媒体产品(如电视机顶盒、DVD播放机、电子阅读机)。</font>
		</p>
		<p>
				<br />
				<font size="2">    众所周知，“一次编程，到处使用”的</font>
				<font size="2">Java </font>
				<font size="2">软件概念原本就是针对网上嵌入式小设备提出的，几经周折，目前SUN公司已推出了J2ME(Java 2 P1atform Micro Edition)针对信息家电的Java版本，其技术日趋成熟，开始投入使用。SUN公司Java虚拟机(JVM)技术的有序开放，使得Java软件真正实现跨平台运行，即Java应用小程序能够在带有JVM的任何硬软件系统上执行。加上Java语言本身所具有的安全性、可靠性和可移植性等特点，对实现瘦身上网的信息家电等网络设备十分有利，同时对嵌入式设备特别是上网设备软件编程技术产生了很大的影响。 </font>
		</p>
		<p>
				<font size="2">   1 Java的性能问题及几种解决方案<br />    Java程序也有其本身的缺陷，那就是其效率问题。由于Java是一种介于解释型和编译型之间的语言，其对内存的管理是通过JVM虚拟机来实现的，同样的程序，如果用编译型语言C来实现，其运行速度一般要比Java快得多。因此，提高Java的性能就显得十分重要。</font>
		</p>
		<p>
				<br />
				<font size="2">    迄今为止，人们为提高Java的运行速度而做出的许多努力，主要集中在程序设计的方法和模式选择方面。但是由于算法和设计模式的优化是通用的，对Java有效的优化算法和设计模式，对其他编译语言也基本适用，因此不能从根本上改变Java程序与编译型语言在执行效率方面的差异。</font>
		</p>
		<p>
				<br />
				<font size="2">    另外，JIT(Just In Time，及时编译)技术也是一个比较好的思想。它的基本原理是，首先，通过Java编译器把Java源代码编译成与平台无关的二进制字节码。然后，在Java程序真正执行之前，系统通过JIT编译器把Java的字节码编译为本地化机器码。最后，系统执行本地化机器码，不用对字节码进行解释。这样做的优点是，大大提高了Java程序的性能，缩短了加载程序的时间；同时，由于编译的结果并不在程序运行期间保存，因此也节约了存储空间。缺点是，由于JIT编译器对所有的代码都想优化，因此同样也占用了很多时间。</font>
		</p>
		<p>
				<br />
				<font size="2">    动态优化技术即提前编译为机器码的技术(dynamicopttmization，ahead of time technology)是提高Java性能的另一个尝试。动态优化技术充分利用了Java源码编译、字节码编译、动态编译和静态编译的技术。其输入是Java的源码或字节码。而输出是经过高度优化的可执行代码和动态库(WindoW中是．dil文件，UNIX中是共享库.a.so文件)。其优点是能大大提高程序的性能，缺点是破坏了Java的可移植性，也对Java的安全带来了一定的隐患。</font>
		</p>
		<p>
				<font size="2">     2 </font>
				<font size="2">JNI技术</font>
				<br />
				<font size="2">    实际上，有一种通常被忽视的技术可以在很大程度上解决这个难题，那就是JNI(Java Native Interface，Java本地化方法)。图l是JNI技术实现的一般步骤。<br /></font>
		</p>
		<p align="center">
				<img style="WIDTH: 313px; HEIGHT: 461px" height="461" src="http://www.blogjava.net/images/blogjava_net/soft/17148/o_s0.jpg" width="399" />
				<br />
				<br />
				<br />
				<a title="图一" href="/images/blogjava_net/soft/17148/r_s0.jpg" target="_blank">
						<font color="#ff0000">点击查看原图</font>
						<br />
				</a>                    <br /><br />                                                                                                                                                             </p>
<img src ="http://www.blogjava.net/soft/aggbug/80787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soft/" target="_blank">书法</a> 2006-11-13 03:46 <a href="http://www.blogjava.net/soft/archive/2006/11/13/posoft.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>