<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>امین امجدی</title>
	<atom:link href="http://www.aminamjadi.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aminamjadi.com</link>
	<description>برنامه نویس و طراح وب</description>
	<lastBuildDate>Sat, 08 Oct 2011 09:50:04 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>دچار فقدان یک انسان شگفت‌انگیز شدیم</title>
		<link>http://www.aminamjadi.com/1390/07/16/%d8%af%da%86%d8%a7%d8%b1-%d9%81%d9%82%d8%af%d8%a7%d9%86-%db%8c%da%a9-%d8%a7%d9%86%d8%b3%d8%a7%d9%86-%d8%b4%da%af%d9%81%d8%aa%e2%80%8c%d8%a7%d9%86%da%af%db%8c%d8%b2-%d8%b4%d8%af%db%8c%d9%85/</link>
		<comments>http://www.aminamjadi.com/1390/07/16/%d8%af%da%86%d8%a7%d8%b1-%d9%81%d9%82%d8%af%d8%a7%d9%86-%db%8c%da%a9-%d8%a7%d9%86%d8%b3%d8%a7%d9%86-%d8%b4%da%af%d9%81%d8%aa%e2%80%8c%d8%a7%d9%86%da%af%db%8c%d8%b2-%d8%b4%d8%af%db%8c%d9%85/#comments</comments>
		<pubDate>Sat, 08 Oct 2011 09:45:32 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[عمومی]]></category>
		<category><![CDATA[استیو جابز]]></category>
		<category><![CDATA[تسلیت]]></category>
		<category><![CDATA[شرکت اپل]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=187</guid>
		<description><![CDATA[با اینکه عمر نسبتا کمی داشت ولی خدمات قابل توجهی به جهانیان ارائه کرد و یکی از تاثیرگذارترین افراد قرن بشمار میرود. به شخصه درگذشت این بزرگ مرد دنیای فناوری را به خانواده , همکاران و  همه دوستدارانش تسلیت عرض میکنم. استیو جابز شرکت اپل &#160;]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://fa.wikipedia.org/wiki/%D8%A7%D8%B3%D8%AA%DB%8C%D9%88_%D8%AC%D8%A7%D8%A8%D8%B2"><img class="aligncenter size-full wp-image-188" title="steve_jobs" src="http://www.aminamjadi.com/wp-content/uploads/2011/10/steve_jobs.jpg" alt="" width="288" height="345" /></a></p>
<p>با اینکه عمر نسبتا کمی داشت ولی خدمات قابل توجهی به جهانیان ارائه کرد و یکی از تاثیرگذارترین افراد قرن بشمار میرود.</p>
<p>به شخصه درگذشت این بزرگ مرد دنیای فناوری را به خانواده , همکاران و  همه دوستدارانش تسلیت عرض میکنم.</p>
<p><a title="استیو جابز" href="http://fa.wikipedia.org/wiki/%D8%A7%D8%B3%D8%AA%DB%8C%D9%88_%D8%AC%D8%A7%D8%A8%D8%B2">استیو جابز</a></p>
<p><a title="شرکت اپل" href="http://fa.wikipedia.org/wiki/%D8%B4%D8%B1%DA%A9%D8%AA_%D8%A7%D9%BE%D9%84">شرکت اپل</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/07/16/%d8%af%da%86%d8%a7%d8%b1-%d9%81%d9%82%d8%af%d8%a7%d9%86-%db%8c%da%a9-%d8%a7%d9%86%d8%b3%d8%a7%d9%86-%d8%b4%da%af%d9%81%d8%aa%e2%80%8c%d8%a7%d9%86%da%af%db%8c%d8%b2-%d8%b4%d8%af%db%8c%d9%85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>مسابقه برنامه نویسی بیان</title>
		<link>http://www.aminamjadi.com/1390/07/11/%d9%85%d8%b3%d8%a7%d8%a8%d9%82%d9%87-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%db%8c%d8%a7%d9%86/</link>
		<comments>http://www.aminamjadi.com/1390/07/11/%d9%85%d8%b3%d8%a7%d8%a8%d9%82%d9%87-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%db%8c%d8%a7%d9%86/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 10:07:08 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[مسابقه]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=183</guid>
		<description><![CDATA[وبسایت بیان داره یک مسابقه برنامه نویسی برگزار می‌کنه که تمامی کسانی که توانایی برنامه نویسی دارند می‌توانند در آن شرکت کنند. در استفاده از تکنولوژیها و زبان های برنامه نویسی هیچ محدودیتی وجود ندارد. جوایزی هم برای نفرات اول تا سی ام در نظر گرفتن. مسابقه آزاد ساعت ۹:۳۰ پنج شنبه ۱۴ مهر و [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://contest.bayan.ir/"><img src="http://contest.bayan.ir/statics/images/Logo.png" alt="http://contest.bayan.ir/statics/images/Logo.png" /></a></p>
<p style="text-align: center;">
<p style="text-align: right;"><a href="http://contest.bayan.ir/">وبسایت بیان</a> داره یک مسابقه برنامه نویسی برگزار می‌کنه که تمامی کسانی که توانایی برنامه نویسی دارند می‌توانند در آن شرکت کنند.</p>
<p style="text-align: right;">در استفاده از تکنولوژیها و زبان های برنامه نویسی هیچ محدودیتی وجود ندارد.</p>
<p><a href="http://contest.blog.ir/category/%D8%AC%D9%88%D8%A7%DB%8C%D8%B2%20%D9%85%D8%B3%D8%A7%D8%A8%D9%82%D9%87">جوایزی</a> هم برای نفرات اول تا سی ام در نظر گرفتن.</p>
<p style="text-align: right;">مسابقه آزاد ساعت ۹:۳۰ پنج شنبه ۱۴ مهر و مسابقه دانش آموزی ساعت ۱۴ پنج شنبه ۲۱ مهر برگزار خواهند شد.</p>
<p style="text-align: right;">توضیحات کاملش رو در <a href="http://contest.blog.ir/">وبلاگ مسابقه</a> بخونید</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/07/11/%d9%85%d8%b3%d8%a7%d8%a8%d9%82%d9%87-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%db%8c%d8%a7%d9%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>آموزش کد نویسی به صورت آنلاین</title>
		<link>http://www.aminamjadi.com/1390/06/10/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%af-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d8%a2%d9%86%d9%84%d8%a7%db%8c%d9%86/</link>
		<comments>http://www.aminamjadi.com/1390/06/10/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%af-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d8%a2%d9%86%d9%84%d8%a7%db%8c%d9%86/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 00:20:48 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[آموزشی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[وب]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=176</guid>
		<description><![CDATA[&#160; وبسایت کد آکادمی امکانی را فراهم آورده که در محیطی پویا کدنویسی جاوا اسکریپت را در ۸ مرحله به شما آموزش میدهد پس از ورود به سایت بر روی Get Started کلیک کرده و با توجه به توضیحات کادر سمت چپ, در خط فرمان مثال ها را به صورت عملی اجرا کنید.]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<section>
<div style="text-align: right;"><img class="aligncenter" src="http://www.codecademy.com/images/homepage/code.png" alt="Program Websites and More" /></div>
</section>
<p style="text-align: right;">وبسایت <a href="http://www.codecademy.com/">کد آکادمی</a> امکانی را فراهم آورده که در محیطی پویا کدنویسی جاوا اسکریپت را در ۸ مرحله به شما آموزش میدهد</p>
<p style="text-align: right;">پس از ورود به سایت بر روی <span class="Apple-style-span" style="font-size: 15px;">Get Started کلیک کرده و با توجه به توضیحات کادر سمت چپ,</span></p>
<p style="text-align: right;"><span class="Apple-style-span" style="font-size: 15px;"> در خط فرمان مثال ها را به صورت عملی اجرا کنید.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/06/10/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%af-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d8%a2%d9%86%d9%84%d8%a7%db%8c%d9%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>جاوااسکریپت</title>
		<link>http://www.aminamjadi.com/1390/02/22/%d8%ac%d8%a7%d9%88%d8%a7%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/</link>
		<comments>http://www.aminamjadi.com/1390/02/22/%d8%ac%d8%a7%d9%88%d8%a7%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/#comments</comments>
		<pubDate>Thu, 12 May 2011 08:50:05 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[آموزشی]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[طراحی]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[factorial]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Literal]]></category>
		<category><![CDATA[NetScape]]></category>
		<category><![CDATA[sort]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[تابعی بودن]]></category>
		<category><![CDATA[جاوا]]></category>
		<category><![CDATA[جاوااسکریپت]]></category>
		<category><![CDATA[زبان امری]]></category>
		<category><![CDATA[ساخت یافته]]></category>
		<category><![CDATA[ساختار شماتیک]]></category>
		<category><![CDATA[پویایی]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=173</guid>
		<description><![CDATA[جاوااسکریپت زبانی است که توسط NetScape تولید شده است. این زبان، زبان برنامه نویسی اسکریپت مبتی بر اشیاء است که بر اساس استاندارد ECMA-262 Edition 3 نوشته شده است. علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(C++) و جاوا شباهت دارد؛ که این [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img title="javascript_logo" src="http://www.webguru-india.com/blog/wp-content/uploads/2010/09/javascript_logo.gif" alt="javascript logo" width="100" height="65" /></p>
<p>جاوااسکریپت زبانی است که توسط NetScape تولید شده است. این زبان، زبان برنامه نویسی اسکریپت مبتی بر اشیاء است که بر اساس استاندارد ECMA-262 Edition 3 نوشته شده است.<br />
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(C++) و جاوا شباهت دارد؛ که این امر برای سهولت یادگیری در نظر گرفته شده است. از همینرو دستورهای متداول مانند if, for, try..catch و &#8230; در این زبان هم یافت می‌گردند.<br />
این زبان می‌تواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته می‌شوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی می‌تواند به عنوان نمونه‌ای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.<br />
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب می‌باشد.<br />
کاربرد گسترده این زبان در سایتها و صفحات اینترنی می‌باشد و به کمک این زبان می‌توان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده می‌شود.</p>
<p>جاوا اسکریپت را در ابتدا شخصی به نام Brendan Eich در شرکت Netscape با نام Mocha طراحی نمود. این نام بعدا به LiveScript و نهایتا به جاوا اسکریپت تغییر یافت. این تغییر نام تقریبا با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه ۲٫۰B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمی‌های زیادی شده و این ابهام را ایجاد می‌کند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود می‌دانند. .</p>
<p>به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسه ای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر Internet Explorer و در آگوست ۱۹۹۶ داده شد. تفاوت های این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار می‌روند. هرچند که مایکروسافت چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح می‌کند.</p>
<p>Netscape جاوا اسکریپت را به سازمان Ecma International برای استاندارد سازی ارسال کرده است و نتیجه نسخهٔ استاندارد شده‌ای به نام ECMA Script است.</p>
<p>جاوا اسکریپت به یکی از پر طرفدار در وب تبدیل شده است. هر چند ابتدا بسیاری از برنامه نویسان حرفه‌ای زبان را کم ارزش تلقی می‌کردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور AJAX بار دیگر جاوا اسکریپت را در معرض توجه قرار داد و برنامه نویسان حرفه‌ای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانه‌های جامعی در این زمینه، بهبود شیوه‌های رایج برنامه نویسی در جاوا اسکریپت و افزایش کاربرد جاوا اسکریپت خارج از وب است.</p>
<p><span id="more-173"></span></p>
<p>امکانات زیر (در صورت قید نشدن) همگی مطابق استاندارد ECMA Script می‌باشند.</p>
<p><strong>زبان امری و ساخت یافته</strong><br />
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی می‌کند. مانند گزاره (if و switch و حلقه‌های while و &#8230;) یک مورد استثنا تعیین حوزهٔ متغییر هاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر می سازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.</p>
<p><strong>پویایی </strong><br />
؛ تایپ دهی پویا : مانند اکثر زبان‌های نویسه‌ای تایپ به مقدارها منسوب می‌گردد و نه به متغییرها. برای مثال متغییر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راه‌های مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.</p>
<p>؛ تایپ دهی ضعیف : زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار می‌آید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کرده است)</p>
<p>؛ اشیا به دید آرایه‌های انتسابی : جاوا اسکیرپت تقریبا تماما بر اساس اشیا است. اشیا، آرایه‌های انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = 10 با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفا یک سهولت نحوی است. ویژگی ها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین می‌توان روی ویژگی های یک شی با ساختار for … in پیمایش کرد.</p>
<p>؛ ارزیابی در زمان اجرا : جاوااسکریپا یک تابع eval دارد که قادر است گزاره‌های تولید شده در یک رشته در زمان اجرا را، اجرا کند.</p>
<p><strong>تابعی بودن </strong><br />
؛ تابعی بودن : توابع موجوداتی «درجه اول» محسوب می‌شوند، یعنی خود یک شی هستند. بنابراین می‌توانند ویژگی داشته باشند، در آرگومان‌های تابع‌ها داده شوند و مانند هر شی دیگری با آن‌ها رفتار شود</p>
<p>؛ توابع داخلی و بستارها : توابع داخلی (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد می‌شوند و متغییرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان مقدار برگشتی تابع باشد، هنوز به متغییرهای تابع بیرونی دسترسی دارد) – این مکانیزم بستار گرفتن در جاوا اسکریپت است.</p>
<p><strong>«ساختار شماتیک» محوری </strong><br />
؛ ساختار شماتیک : جاوا اسکریپت به جای رده‌ها برای تعریف ویژگی‌های اشیا، که شامل متد‌ها و وراثت است از «ساختار شماتیک» استفاده می‌کند (prototype). امکان شبیه سازی بسیاری از امکانات رده-محور با ساختارهای شماتیک جاوا اسکریپت امکان پذیر است.</p>
<p><strong>توابع در نقش سازندهٔ اشیا </strong><br />
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل می‌کنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا می‌کند.ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص می‌کند.</p>
<p>؛ توابع در نقش متد : بر خلاف بیشتر زبان‌های شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده می‌شود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی می‌شود.</p>
<p><strong>امکانات دیگر </strong><br />
جاوا اسکریپت برای تامین اشیا و متدها که با آن‌ها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسه‌ها (include) هم به این محیط نیازمند است (مانند تگ &lt;script&gt;در HTML ) . (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شده است)</p>
<p>؛ تعداد متغییر پارامتر (variadic) : تعداد نامعینی پارامتر را می‌توان به یک تابع ارسال نمود. تابع می‌تواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آن‌ها دسترسی داشته باشد.</p>
<p><strong>Literalهای آرایه و شی </strong><br />
مانند بسیاری از زبان‌های نویسه‌ای آرایه‌ها و اشیا (که در زبان‌های دیگر همان آرایه‌های انتسابی هستند) را می‌توان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب داده‌ای JSON هم هست.</p>
<p><strong>عبارات منظم </strong><br />
جاوا اسکریپت به شیوه‌ای مشابه زبان پرل از عبارات منظم پشتیبانی می‌کند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشته ها، فراهم می‌کند.</p>
<p>&nbsp;</p>
<p><strong>نظام تایپ دهی</strong></p>
<p>انواع زیر جزو انواع داده‌های قابل دسترس در زبان جاوا اسکریپت است. در استاندارد ECMA انواع دیگری هم تعریف شده که صرفا داخلی است و برای پیاده سازی است.</p>
<p>تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشده است</p>
<p>نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null</p>
<p>نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را می پذیرد.</p>
<p>نوع رشته: در بر گیرندهٔ تمام رشته‌های متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیس‌های نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.</p>
<p>زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته می‌شود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشته‌ها آن‌ها را به عنوان اعداد صحیح بدون علامت در نظر می‌گیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمین‌های خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شده است.</p>
<p>نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).</p>
<p>نوع شی: شی در جاوا اسکریپت یک مجموعه بدون ترتیب از ویژگی‌ها است. هر ویژگی می‌تواند داخلی، فقط-خواندنی، غیر قابل حذف، و غیر قابل پیمایش باشد (یا ترکیبی از این‌ها یا هیچ کدام)</p>
<p><strong>تبدیلات خودکار</strong><br />
این زبان دارای تبدیلات خود کار بین این انواع داده‌ای است.</p>
<p>زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و &amp;&amp; و || استفاده شود، تبدیل به نوع دودویی را انجام می‌دهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت می‌گردد. همچنین رشتهٔ تهی false و سایر رشته‌ها true در نظر گرفته می‌شود. انواع شی و تابع true و undefined و null هم false در نظر گرفته می‌شود.</p>
<p>زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت می‌گیرد، مانند ۵ + “۳۷” که می‌شود “۵۳۷”</p>
<p>عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد می‌گردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست می‌دهد.</p>
<p>&nbsp;</p>
<p><strong>چند برنامه ساده به جاوا اسکریپت</strong></p>
<p><strong><br />
</strong></p>
<p>برنامه‌های ورودی و خروجی در مرورگر وب:</p>
<p>&nbsp;</p>
<div dir="ltr">
<div>
<pre>&lt;script type="text/javascript"&gt;
        alert ("Hello world");
        var x = prompt("Enter Name:", "Default name");
        alert ( "Hello, " + x )
&lt;/script&gt;</pre>
</div>
</div>
<p>&nbsp;</p>
<p>برای استفاده ساده از عناصر HTML و DOM:</p>
<p>&nbsp;</p>
<div dir="ltr">
<div>
<pre>&lt;script type="text/javascript"&gt;
        document.write("Hello world");
        function handle() {
                document.write("You entered: " + document.getElementById("myinput").value );
        }
&lt;/script&gt;

&lt;form&gt;
&lt;input type="text" id="myinput"/&gt;
&lt;input type="button" onclick="handle()" value="Click here" /&gt;
&lt;/form&gt;</pre>
</div>
</div>
<p>&nbsp;</p>
<p>برنامه sort:</p>
<p>&nbsp;</p>
<div dir="ltr">
<div>
<pre>&lt;script type="text/javascript"&gt;
        var myarray = [1,5,8,2,3,0,2,9,11];
        var i = 0;
        var j = 0;
        for (i = 0; i &lt; myarray.length ; ++i )
        {
                for (j = 0; j &lt; myarray.length; ++j)
                {
                        if (myarray[i] &lt; myarray[j])
                        {
                                var tmp = myarray[i];
                                myarray[i] = myarray[j];
                                myarray[j] = tmp;
                        }
                }
        }

        for (i = 0; i &lt; myarray.length; ++i)
        {
                document.write (myarray[i] + " " );
        }
&lt;/script&gt;</pre>
</div>
</div>
<p>&nbsp;</p>
<p>برنامه swap:</p>
<p>&nbsp;</p>
<div dir="ltr">
<div>
<pre>&lt;script type="text/javascript"&gt;
        var a = 10, b = 40;
        [a,b] = [b,a]
        alert("" + a + " " + b);
&lt;/script&gt;</pre>
</div>
</div>
<p>&nbsp;</p>
<p>برنامه factorial:</p>
<p>&nbsp;</p>
<div dir="ltr">
<div>
<pre>&lt;script type="text/javascript"&gt;
        function factorial(x) {
                if (x &gt; 0)
                        return x * factorial(x-1);
                return 1;
        }
        alert(factorial(5));
&lt;/script&gt;</pre>
</div>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/02/22/%d8%ac%d8%a7%d9%88%d8%a7%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>جاوا (زبان برنامه‌نویسی)</title>
		<link>http://www.aminamjadi.com/1390/02/22/%d8%ac%d8%a7%d9%88%d8%a7-%d8%b2%d8%a8%d8%a7%d9%86-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87%e2%80%8c%d9%86%d9%88%db%8c%d8%b3%db%8c/</link>
		<comments>http://www.aminamjadi.com/1390/02/22/%d8%ac%d8%a7%d9%88%d8%a7-%d8%b2%d8%a8%d8%a7%d9%86-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87%e2%80%8c%d9%86%d9%88%db%8c%d8%b3%db%8c/#comments</comments>
		<pubDate>Wed, 11 May 2011 23:32:42 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[آموزشی]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[طراحی]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[Applet]]></category>
		<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Generics]]></category>
		<category><![CDATA[GNU Classpath]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Java card for smartcard]]></category>
		<category><![CDATA[JavaEE]]></category>
		<category><![CDATA[JavaME]]></category>
		<category><![CDATA[JavaSE]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Servlet]]></category>
		<category><![CDATA[Swing]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[اشیا]]></category>
		<category><![CDATA[برنامه‌نویسی]]></category>
		<category><![CDATA[برنامه‌های تحت وب]]></category>
		<category><![CDATA[تابع]]></category>
		<category><![CDATA[توزیع‌]]></category>
		<category><![CDATA[حافظه]]></category>
		<category><![CDATA[سان میکروسیستم]]></category>
		<category><![CDATA[سیستم‌عامل]]></category>
		<category><![CDATA[قابلیت حمل]]></category>
		<category><![CDATA[مایکروسافت]]></category>
		<category><![CDATA[مثال‌ها]]></category>
		<category><![CDATA[موبایل]]></category>
		<category><![CDATA[پاکت پی‌سی]]></category>
		<category><![CDATA[کتابخانه‌]]></category>
		<category><![CDATA[کلاس]]></category>
		<category><![CDATA[گرامر]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=170</guid>
		<description><![CDATA[&#160; جاوا (به انگلیسی: Java) یک زبان برنامه‌نویسی شئ‌گراست که برای اولین بار توسط جیمز گوسلینگ در شرکت سان مایکروسیستمز ایجاد شد و در سال ۱۹۹۵ به عنوان بخشی از سکوی جاوا منتشر شد. زبان جاوا شبیه به ++C است اما مدل شیءگرایی آسان‌تری دارد و از قابلیت‌های سطح پایین کمتری پشتیبانی می‌کند. یکی از [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://upload.wikimedia.org/wikipedia/fa/thumb/3/39/Java_logo.svg/120px-Java_logo.svg.png" alt="Java logo.svg" width="120" height="220" /></p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: right;">جاوا (به انگلیسی: Java) یک زبان برنامه‌نویسی شئ‌گراست که برای اولین بار توسط جیمز گوسلینگ در شرکت سان مایکروسیستمز ایجاد شد و در سال ۱۹۹۵ به عنوان بخشی از سکوی جاوا منتشر شد. زبان جاوا شبیه به ++C است اما مدل شیءگرایی آسان‌تری دارد و از قابلیت‌های سطح پایین کمتری پشتیبانی می‌کند. یکی از قابلیت‌های اصلی جاوا این است که مدیریت حافظه را بطور خودکار انجام می‌دهد. ضریب اطمینان عملکرد برنامه‌های نوشته‌شده به این زبان بالا است و وابسته به سیستم‌عامل خاصی نیست، به عبارت دیگر می‌توان آن را روی هر رایانه با هر نوع سیستم‌عاملی اجرا کرد. برنامه‌های جاوا به صورت کدهای بیتی همگردانی (کامپایل) می‌شوند. که مانند کد ماشین هستند و به ویژه وابسته به سیستم‌عامل خاصی نمی‌باشند.</p>
<p style="text-align: right;">در مقایسه با زبان‌های دیگر، همچون ++C یا بیسیک یا فورترن، جاوا زبان نسبتاً جدیدتری است. شرکت سان مایکروسیستمز در سال ۱۹۹۱ یک پروژه تحقیقاتی به نام گرین (Green) را آغاز کرد. هدف این پروژه ایجاد زبانی جدید شبیه به ++C بود که نویسنده اصلی آن، جیمز گاسلینگ، آن را بلوط (Oak) نامید. اما بعدها به دلیل برخی مشکلات حقوقی[نیازمند منبع] از میان لیستی از کلمات تصادفی[۱] نام آن به جاوا تغییر کرد.<br />
پروژه گرین به دلیل مشکلات بازاریابی در شرف لغو شدن بود تا اینکه گسترش وب در سال ۱۹۹۳ باعث نمایش توانایی‌های وافر جاوا در این عرصه گشت. اینگونه بود که شرکت سان مایکروسیستمز در مه ۱۹۹۵ جاوا را رسماً به بازار عرضه کرد.<br />
جاوا یک زبان برنامه‌نویسی است که در ابتدا توسط شرکت sun Microsystems ایجاد شده‌است و در سال ۱۹۹۵ به عنوان مولفه اصلی java platform منتشر شد.این زبان قسمت‌های بسیاری از گرامر خود را از C و ++C گرفته اما دارای مدل شی‌گرایی ساده‌ای است و امکانات سطح پایین کمی دارد. کاربرد جاوا در کامپایل به صورت بایت کد است که قابلیت اجرا روی تمامی ماشین‌های شبیه‌سازی جاوا را داشته باشد صرف نظر از معماری و خصوصیات آن کامپیوتر. اجرای اصلی کامپایلرهای جاوا، ماشین‌های پیاده‌سازی و کتابخانه‌های آن توسط این شرکت از سال ۱۹۹۵ منتشر شد. در ۲۰۰۷ may این شرکت، نرم‌افزار رایگان این زبان را فراهم کرد. دیگران هم کاربردهای دیگری از این زبان را منتشر کردند مثل کامپایلر [[]GNU]] برای جاوا.<br />
James Gosling پروژه زبان برنامه‌نویسی جاوا را در ۱۹۹۱ june آغاز کرد. این زبان در ابتدا Oak، سپس Green و در آخر هم جاوا نامیده شد. gosling قصد داشت یک ماشین مجازی و یک ماشینی به کار برد که شبیه C و ++C باشد. این شرکت نسخهٔ اول جاوا را تحت عنوان Java1.0 در سال ۱۹۹۵ منتشر ساخت. مرورگرهای اصلی وب، به هم پیوستند تا به طور مطمئن ]]java [[applet را بدون صفحات وب اجرا کنند و به این صورت جاوا خیلی زود معروف و محبوب شد. با پیدایش java2، نسخهٔ جدید توانست ترکیب‌های جدیدی را برای نوع‌های مختلف پلت فرم‌ها ایجاد کند. به عنوان مثال J2EE، باهدف کاربرد برای تشکیلات اقتصادی، و نسخهٔ J2ME برای موبایل منتشر شد. در سال ۲۰۰۶ با هدف بازاریابی، این شرکت نسخهٔ جدید J2 را با نام‌های JavaEE، JavaME و JavaSE منتشر کرد. در سال ۱۹۹۷ شرکت سان میکروسیستمز،ISO/IEC JTC1 standards body و Ecma International را به فرمول جاوا تغییر داد. شرکت sun بسیاری از کاربردهای جاوایش را بدون هیچ هزینه‌ای فراهم آورد. شرکت sun با فروش مجوز برای بعضی از کاربردهای خاصش مثل Java Enterprise System درآمدی را بدست آورد. اولین تمایزی که بین SDK و JRE داد شامل فقدان کامپایلر برای JRE و سرفایل‌ها بود. در ۱۳ نوامبر ۲۰۰۶ شرکت sun نرم‌افزار جاوا را به صورت رایگان و با مجوز عمومی برای همه منتشر کرد. جاوا یک پلتفرم نرم‌افزاری است.</p>
<p style="text-align: right;"><span id="more-170"></span></p>
<p style="text-align: right;"><strong>برنامه‌های جاوا و اپلت‌ها</strong></p>
<p>جاوا برای نوشتن انواع برنامه‌های کاربردی مناسب است. با جاوا می‌توان انواع برنامه‌های زیر را نوشت:</p>
<ul>
<li>برنامه‌های تحت وب</li>
<li>برنامه‌نویسی سیستم‌های کوچک مانند موبایل، پاکت پی‌سی و ...</li>
<li>برنامه‌های کاربردی بزرگ (Enterprise)</li>
<li>برنامه‌های رومیزی (Desktop)</li>
<li>و غیره.</li>
</ul>
<p style="text-align: right;">قابلیت خاصی در جاوا وجود دارد بنام اپلت. اپلت‌ها امکانات فراوانی برای نوشتن برنامه‌های تحت وب در اختیار برنامه‌نویسان قرار می‌دهند که دیگر زبان‌های برنامه‌نویسی فاقد آن هستند. البته وجود ماشین مجازی جاوا برای اجرای اپلت لازم است. اپلت‌ها نظیر فناوری Activex شرکت مایکروسافت هستند که برنامه‌نویسان را قادر می‌سازد تا امکاناتی را به مرورگر کاربر بیافزایند.البته تفاوت این دو در امنیت می‌باشد به گونه‌ای که اپلت‌ها بدلیل اینکه در محیطی به نام جعبه شنی اجرا می‌شوند امن هستند ولی Activex‌ها فاقد چنین امنیتی هستند.</p>
<ol>
<li><strong>سیستم‌عامل</strong>: هر چقدر زبانهای .net قوی باشند تنها بر روی پلت فرم ویندوز اجرا می‌شوند و برخی ویندوز را سیستم‌عامل غیر قابل اعتمادی در برنامه نویسی Enterprise می‌دانند.<span style="font-size: 11px;"> </span>ولی جاوا از این نظر انتخابی خوب است.</li>
</ol>
<ol>
<li><strong>قابلیت حمل</strong>: جاوا بر روی پلتفرم‌های گوناگونی قابل اجرا است، از ATM و ماشین رختشویی گرفته تا سرورهای سولاریس با قابلیت پشتیبانی از ۱۰۲۴ cpu برای پردازش.</li>
</ol>
<ol>
<li><strong>جاوا بیشتر از یک زبان است</strong>: جاوا فقط یک زبان نیست و انجمن‌هایی متشکل از بزرگان صنایع و برنامه‌نویسان زیادی مشغول به توسعه و ایجاد استانداردهای جدید و به روز هستند.</li>
</ol>
<p style="text-align: right;"><strong>خط مشی جاوا </strong></p>
<p style="text-align: right;">یکی از ویژگی‌های جاوا قابل حمل بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به طور مشابهی در کامپیوترهای مختلف با سخت‌افزارهای متفاوت اجرا شود. و باید این توانایی را داشته باشد که برنامه یک بار نوشته شود، یک بار کامپایل شود و در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا را ذخیره می‌کند، اما نه به‌صورت کد ماشین بلکه به‌صورت بایت کد جاوا. دستورالعمل‌ها شبیه کد ماشین هستند، اما با ماشین‌های مجازی که به طور خاص برای سخت‌افزارهای مختلف نوشته شده‌اند، اجرا می‌شوند. در نهایت کاربر از JRE نصب شده روی ماشین خود یا مرورگر وب استفاده می‌کند. کتابخانه‌های استاندارد یک راه عمومی برای دسترسی به ویژگی‌های خاص فراهم می‌کنند. مانند گرافیک، نخ‌کشی و شبکه. در بعضی از نسخه‌های JVM بایت کدها می‌توانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایت کد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامه‌های ترجمه شده تقریباً همیشه کندتر از برنامه‌های کامپایل شدهٔ محلی اجرا می‌شوند. این شکاف می‌تواند با چند تکنیک خوش‌بینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیک‌ها JIT است که بایت کد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان می‌کند. در نتیجه برنامه خیلی سریع‌تر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا می‌شود. بیشتر VMهای پیشرفته، به‌صورت کامپایل مجدد پویا، در آنالیز VM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینه‌سازی قسمت‌های برنامه، استفاده می‌شوند. کامپایل مجدد پویا می‌تواند کامپایل ایستا را بهینه‌سازی کند. زیرا می‌تواند قسمت hot spot برنامه و گاهی حلقه‌های داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل JIT و کامپایل مجدد پویا به برنامه‌های جاوا اجازه می‌دهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.<br />
تکنیک بعدی به عنوان کامپایل ایستا شناخته شده است. که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایت کدها را به کدهای شی محلی ترجمه می‌کند.<br />
کارایی جاوا نسبت به نسخه‌های اولیه بیشتر شد. در تعدادی از تست‌ها نشان داده شد که کارایی کامپایلرJIT کاملاََ مشابه کامپایلر محلی شد.عملکرد کامپایلرها لزوماَ کارایی کدهای کامپایل شده را نشان نمی‌دهند.یکی از پیشرفت‌های بی نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمی‌کردند.علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثنا رخ می‌دهد، اطلاعات اشکال زدایی که در حافظه وجود دارد، ثبت می‌کنند.</p>
<p style="text-align: right;"><strong>پیاده سازی</strong></p>
<p style="text-align: right;">شرکت سان میکروسیستم مجوز رسمی برای پلت فرم استاندارد جاوا را به Microsoft Windows, Linux، و Solaris. داده است. همچنین محیط‌های دیگری برای دیگر پلت فرم‌ها فراهم آورده است. علامت تجاری مجوز شرکت سان میکروسیستم طوری بود که با همهٔ پیاده سازی‌ها سازگار باشد.به علت اختلاف قانونی که با ماکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیاده سازی ماکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگی‌های خاصی را برای خودش اضافه کرده‌است. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعدماکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، مرورگر اینترنت نمی‌تواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آنها و نسخه‌های دیگر ویندوز فراهم آوردند.</p>
<p style="text-align: right;"><strong>اداره خودکار حافظه</strong></p>
<p style="text-align: right;">جاوا از حافظهٔ بازیافتی خودکار برای ادارهٔ حافظه در چرخهٔ زندگی یک شی استفاده می‌کند. برنامه‌نویس زمانی که اشیا به وجود می‌آیند، این حافظه را تعیین می‌کند. و در زمان اجرا نیز، زمانی که این اشیا در استفادهٔ زیاد طولانی نباشند، برنامه نویس مسئول بازگرداندن این حافظه است. زمانی که مرجعی برای شی‌های باقیمانده نیست، شی‌های غیر قابل دسترس برای آزاد شدن به صورت خودکار توسط بازیافت حافظه، انتخاب می‌شوند. اگر برنامه‌نویس مقداری از حافظه را برای شی‌هایی که زیاد طولانی نیستند، نگه دارد، چیزهایی شبیه سوراخ حافظه اتفاق می‌افتند.<br />
یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامه‌نویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده می‌گیرد. در بعضی از زبان‌ها حافظه لازم برای ایجاد یک شی، به صورت ضمنی و بدون شرط، به پشته تخصیص داده می‌شود. و یا به‌طور صریح اختصاص داده شده و از heap بازگردانده می‌شود. در هر کدام از این راه‌ها، مسئولیت ادارهٔ اقامت حافظه با برنامه‌نویس است. اگر برنامه شی را برنگرداند، سوراخ حافظه اتفاق می‌افتد. اگر برنامه تلاش کند به حافظه‌ای را که هم‌اکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بی‌ثبات شده و یا تخریب شود. این ممکن است با استفاده از اشاره‌گر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد می‌شود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. به‌طوری که این زمانی اتفاق می‌افتد که برنامه بی‌کار باشد. اگر حافظهٔ خالی کافی برای تخصیص شی جدید در heap وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیا استفاده می‌شوند.<br />
جاوا از نوع اشاره‌گر ریاضی C و ++C پشتیبانی نمی‌کند. در جایی که آدرس اشیا و اعداد صحیح می‌توانند به جای هم استفاده شوند. همانند ++C و بعضی زبان‌های شی‌گرای دیگر، متغیرهای نوع‌های اولیهٔ جاوا شی‌گرا نبودند. مقدار نوع‌های اولیه، مستقیماً در فیلدها ذخیره می‌شوند. در فیلدها (برای اشیا) و در پشته (برای توابع)، بیشتر از heap استفاده می‌شود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شی‌گرای خالص به حساب نمی‌آید.</p>
<p style="text-align: right;"><strong>گرامر</strong></p>
<p style="text-align: right;">گرامر جاوا خیلی بزرگتر از ++C است. مثل ++C که ترکیب ساختارها و برنامه‌های شی‌گرا می‌باشد، نیست. بلکه زبان جاوا یک زبان شی‌گرای خالص است. همهٔ کدهایی که داخل کلاس نوشته می‌شود و همهٔ چیزهایی که داخل شی است، با استثنائات نوع دادهٔ اصلی، که به صورت کلاس نیستند، برای اجرا. جاوا بسیاری از ویژگی‌ها را پشتیبانی می‌کند. از کلاس‌ها برای ساده‌تر کردن زبان و جلوگیری از رخداد خطا.</p>
<p style="text-align: right;"><strong>نمونه‌هایی از برنامه‌های جاوا</strong></p>
<p>در زیر نمونه‌ای از برنامه‌ای که در جاوا نوشته شده‌است آورده شده است. البته برای کامپایل کردن این برنامه بایستی JDK بر روی سیستم مورد نظر نصب شده باشد.</p>
<div dir="ltr">
<div>
<pre>public class Test{
    public static void main(String[] args) {
        System.out.println(&#8220;HelloWorld!&#8221;);
    }
}</pre>
</div>
</div>
<p>برای اجرای برنامه بالا، ابتدا باید یک فایل به نام Test.java ساخته شود و سپس کامپایل شود:</p>
<div style="text-align: left;">
<pre>$ javac Test.java</pre>
</div>
<p>سپس یک فایل خروجی به نام Test.class دریافت می‌شود. بعد با استفاده از دستور زیر برنامه قابل اجرا است:</p>
<div style="text-align: left;">
<pre>$ java Test</pre>
</div>
<h3>مثال‌ها</h3>
<p>برنامه Hello world به این صورت در زبان جاوا می‌تواند نوشته شود:</p>
<div dir="ltr">
<div>
<pre>// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}</pre>
</div>
</div>
<p>بر طبق قرارداد فایل هل بعد از کلاس‌های عمومی نام گذاری می‌شوند.سپس باید پسوند java را به این صورت اضافه کرد: Hello world.java .این فایل اول باید با استفاده از کامپایلر جاوا به بایت کد کامپایل شود.در نتیجه فایل Hello world.class ایجاد می‌شود.این فایل قابل اجرا است.فایل جاوا ممکن است فقط یک کلاس عمومی داشته باشد.اما می‌تواند شامل چندین کلاس با دستیابی عمومی کمتر باشد.</p>
<p>کلاسی که به صورت خصوصی تعریف می‌شود ممکن است در فایل .java ذخیره شود.کامپایلر برای هر کلاسی که در فایل اصلی تعریف می‌شود یک کلاس فایل تولید می‌کند.که نام این کلاس فایل همنام کلاس است با پسوند .class</p>
<p>کلمه کلیدی public (عمومی) برای قسمت هایی که می‌توانند از کدهای کلاس‌های دیگر صدا زده بشوند، به کار برده می‌شود. کلمهٔ کلیدی static (ایستا) در جلوی یک تابع، یک تابع ایستا را که فقط وابسته به کلاس است و نه قابل استفاده برای نمونه‌هایی از کلاس، نشان می‌دهد.فقط تابع‌های ایستا می‌توانند توسط اشیا بدون مرجع صدا زده شوند.داده‌های ایستا به متغیر هایی که ایستا نیستند، نمی توانند دسترسی داشته باشند.</p>
<p>کلمهٔ کلیدی void (تهی) نشان می‌دهد که تابع main هیچ مقداری را بر نمی گرداند.اگر برنامهٔ جاوا بخواهد با خطا از برنامه خارج شود، باید system.exit() صدا زده شود. کلمهٔ main یک کلمهٔ کلیدی در زبان جاوا نیست.این نام واقعی تابعی است که جاوا برای فرستادن کنترل به برنامه، صدا می‌زند.برنامه جاوا ممکن است شامل چندین کلاس باشد که هر کدام دارای تابع main هستند.</p>
<p>تابع main باید آرایه‌ای از اشیا رشته‌ای را بپذیرد.تابع main می‌تواند از آرگومان‌های متغیر به شکل public static void main(string…args) استفاده کند که به تابع main اجازه می‌دهد اعدادی دلخواه از اشیا رشته‌ای را فراخوانی کند. پارامترstring[]args آرایه‌ای از اشیا رشته ایست که شامل تمام آرگومان هایی که به کلاس فرستاده می‌شود، است.</p>
<p>چاپ کردن، قسمتی از کتابخانهٔ استاندارد جاوا است.کلاس سیستم یک فیلد استاتیک عمومی به نام out تعریف کرده است.شی out یک نمونه از کلاس printstream است و شامل تعداد زیادی تابع برای چاپ کردن اطلاعات در خروجی استاندارد است.همچنین شامل println(string) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه می‌کند.</p>
<p style="text-align: right;"><strong>توزیع‌های جاوا</strong></p>
<p>منظور از توزیع جاوا پیاده‌سازی‌های مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانه‌های استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیع‌کنندهٔ عمده جاوا وجود دارند:</p>
<ul>
<li><strong>سان میکروسیستمز:</strong> توزیع کننده اصلی جاوا و مبدع آن می‌باشد. در اکثر موارد هنگامی که گفته می‌شود جاوا منظور توزیع سان می‌باشد.</li>
</ul>
<ul>
<li><strong>GNU Classpath:</strong> این توزیع از سوی موسسه نرم‌افزارهای آزاد منتشر شده و تقریبا تمامی کتابخانه استاندارد زبان جاوا در آن بدون بهره‌گیری از توزیع شرکت سان از اول پیاده‌سازی شده است. یک کامپایلر به نام GNU Compiler for Java نیز برای کامپایل کردن کدهای جاوا توسط این موسسه ایجاد شده‌است. فلسفه انتخاب نام Classpath برای این پروژه رها کردن تکنولوژی جاوا از وابستگی به علامت تجاری جاوا است بطوریکه هیچ وابستگی یا محدودیتی برای استفاده آن از لحاظ قوانین حقوقی ایجاد نشود و از طرفی به خاطر وجود متغیر محیطی classpath در تمامی محیط‌های احرایی برنامه‌های جاوا، این نام به نوعی تکنولوژی جاوا را برای خواننده القا می‌کند. کامپایلر GNU توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست. لازم به ذکر است که در حال حاضر شرکت سان تقریبا تمامی کدهای JDK را تحت مجوز نرم‌افزارهای آزاد به صورت متن باز منتشر کرده است و قول انتشار قسمت بسیار کوچکی از این مجموعه را که به‌دلیل استفاده از کدهای شرکت‌های ثانویه نتوانسته به صورت متن باز منتشر نماید در آینده نزدیک با بازنویسی این کدها داده است.</li>
</ul>
<ul>
<li><strong>مایکروسافت #J:</strong> این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه می‌باشد که توسط مایکروسافت و در چارچوب .net ارائه شده‌است. انتظار اینکه در سیستم‌عاملی غیر از ویندوز هم اجرا شود را نداشته باشید.</li>
</ul>
<ul>
<li><strong>AspectJ:</strong> این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی می‌باشد که امکان برنامه نویسی Aspect Oriented را به جاوا می‌افزاید. این برنامه توسط بنیاد برنامه‌نویسی جلوه‌گرا و به صورت کدباز ارائه شده‌است.</li>
</ul>
<p style="text-align: right;"><strong>کلاس‌های خاص</strong></p>
<h3>Applet (برنامه‌های کاربردی کوچک)</h3>
<p>اپلت جاواها برنامه‌هایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شده‌اند. واژهٔ import باعث می‌شود کامپایلر جاوا کلاس‌های javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه می‌دهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست می‌کند. کلاس اپلت یک تابع پنجره‌ای مجرد است که برنامه‌های کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم می‌کند. کلاس Hello تابع موروثی print(Graphics) را از سوپر کلاس container باطل می‌کند، برای اینکه کدی که اپلت را نمایش می‌دهد، فراهم کند. تابع paint شی‌های گرافیکی را که شامل زمینه‌های گرافیکی هستند را می فرستد تا برای نمایش اپلت‌ها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع drawstring(string,int,int) را صدا می‌زند.</p>
<h3>Servlet</h3>
<p>تکنولوژی servlet جاوا گسترس وب را به آسانی فراهم می‌کند.و شامل مکانیزم هایی برای توسعهٔ تابعی سرور وب و برایدسترسی به سیستم‌های تجاری موجود است.servlet قسمتی از javaEE است که به درخواست‌های مشتری پاسخ می‌دهد.</p>
<div dir="ltr">
<div>
<pre>// Hello.java
import java.io.*;
import javax.servlet.*;

public class Hello extends GenericServlet {
    public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html");
        final PrintWriter pw = response.getWriter();
        pw.println("Hello, world!");
        pw.close();
    }
}</pre>
</div>
</div>
<p>واژهٔ import کامپایلر جاوا را هدایت می‌کند که تمام کلاس‌های عمومی و واسط‌ها را از بسته‌های java.io وjava.servlet را در کامپایل وارد کند.</p>
<p>کلاس Hello کلاس Genericservlet را توسعه می‌دهد. کلاس Genericservlet واسطی برای سرور فراهم می‌کند تا درخواست را به servlet بفرستد و چرخهٔ زندگی servlet را کنترل کند.</p>
<h3>JSP</h3>
<p>صفحهٔ سرور جاوا قسمتی از سرور javaEE است که پاسخ تولید می‌کند.نوعاَ صفحات HTML به درخواست‌های HTTP از مشتری.JSPها کد جاوا در صفحهٔ HTML را با استفاده از حائل &lt;%and%&gt; اضافه می‌کنند.JSP به javaservlet کامپایل می‌شود.</p>
<h3>Swing</h3>
<p>Swing کتابخانهٔ واسط گرافیکی کاربر است برای پلت فرم javaSE. ابزاری مشابه پنجره، GTK و motif توسط شرکت sun فراهم شده‌اند. این مثال کاربرد swing یک پنجرهٔ واحد همراه با Hello world را ایجاد می‌کند.</p>
<div dir="ltr">
<div>
<pre>// Hello.java (Java SE 5)
import java.awt.BorderLayout;
import javax.swing.*;

public class Hello extends JFrame {
    public Hello() {
        super("hello");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        add(new JLabel("Hello, world!"));
        pack();
    }

    public static void main(String[] args) {
        new Hello().setVisible(true);
    }
}</pre>
</div>
</div>
<p>اولین جملهٔ import کامپایلر جاوا را هدایت می‌کندتا کلاس Borderlayout را از بستهٔ java.awt در جاوا به کامپایل اضافه کند. و import دوم همهٔ کلاس‌های عمومی و واسط آن‌ها را از بستهٔ javax.swing اضافه می‌کند. کلاس Hello کلاس Jframe را توسعه می‌دهد.کلاس Jframe یک پنجره با میلهٔ عنوان و کنترل بستن است.</p>
<p>زمانی که برنامه آغاز می‌شود، تابع main با JVM صدا زده می‌شود.این یک نمونهٔ جدید از کلاس Hello را ایجاد کرده و با صدا زدن تابع setvisible(boolean) با مقدار true نمایش داده می‌شود.</p>
<h3>Generics</h3>
<p>قبل از کلاس‌های عمومی برای هر متغیر باید یک نوع خاص تعریف می‌کردیم.به عنوان مثال برای کلاس‌های ظرف این امر مشکل بود زیرا را آسانی برای ایجاد یک container وجود نداشت که نوع‌های خاصی از اشیا را بپذیرد.کلاس‌های عمومی اجازه می‌دهند نوع زمان کامپایل، بدون نیاز به ایجاد تعداد زیادی از container، چک شود.همه آنها کدهای مشابهی دارند.</p>
<p style="text-align: right;">&nbsp;</p>
<p style="text-align: right;"><strong>کتابخانه‌های کلاس</strong></p>
<p>کتابخانه‌های جاوا که به صورت بایت کد از کد اصلی کامپایل شده اند، برای پشتیبانی از بعضی از کاربردهای جاوا، توسطJRE منتشر شده است. مثال هایی از این کتابخانه‌ها عبارتند از:</p>
<ul>
<li>کتابخانه‌های مرکزی که شامل:</li>
<li>کتابخانه‌هایی که برای ساختار داده کاربرد دارند.مثل لیست ها، درخت ها، مجموعه ها، مترجم ها.</li>
<li>کتابخانهٔ پرداز XML (تجزیه، تغییر شکل، اعتبار)</li>
<li>کتابخانه‌های موضعی و بین‌المللی</li>
<li>کتابخانه‌های انتگرال گیری که امکان تایپ کردن توسط سیستم‌های بیرونی را می‌دهند.</li>
<li>JDBC برای دستیابی به داده ها</li>
<li>JNDI برای مراجعه و کشف کردن</li>
<li>CORBA &amp; RMI برای توسعهٔ کاربرد توزیع کردن</li>
<li>کتابخانه‌های واسط کاربر</li>
<li>AWT (توابع پنجره‌ای مجرد)که قسمت هایی از GUI را فراهم می‌کنند.</li>
<li>کتابخانه‌های swing که در AWT ساخته شده اند اما کاربرد هایی از AWT widgetry را فراهم می‌کنند.</li>
<li>APLها برای ضبط صدا، پردازش و بازنواختی</li>
<li>کاربردهای وابستهٔ پلت فرم ماشین‌های مجازی جاوا</li>
<li>Plugins که توانایی اجرا شدن در مرورگرهای وب را به اپلت می‌دهد.</li>
<li>java web start</li>
<li>دادن مجوز و مستند سازی</li>
</ul>
<p style="text-align: right;">&nbsp;</p>
<p style="text-align: right;"><strong>ویرایش</strong></p>
<p>شرکت سان میکروسیستم، ۴ نوع ویرایش از کاربردهای مختلف جاوا را ارائه داده است:</p>
<ol>
<li>Java card for smartcard</li>
<li>JavaME</li>
<li>JavaSE</li>
<li>JavaEE</li>
</ol>
<p style="text-align: right;">&nbsp;</p>
<p style="text-align: right;"><strong>ایرادات مطرح شده</strong></p>
<p>مهم‌ترین ایرادی که برنامه نویسان سایر زبان‌ها به زبان جاوا می‌گیرند سرعت اجرایی پایین جاوا در مقایسه با زبان‌ها سطح پایین‌تر مانند ++C و اسمبلی است. یک برنامه جاوا به صورت بایت کد می‌باشد و باید در ماشین مجازی جاوا اجرا گردد. به همین دلیل سرعت اجرای پایینی را در مقابل زبان‌های همچون ++C دارد. به صورت دیگر یک برنامه C به طور متوسط تا ۱۰ برابر سریعتر از برنامه مشابه جاوا اجرا می‌گردد.</p>
<p>جاوا علی رغم شیءگرا بودن در بخشی از قسمت‌ها برخی اصول شی‌گرایی را نادیده گرفته‌است. از جمله این قسمت‌ها قابلیت بازتابش Reflection می‌باشد. هدف اصلی بازتابش بررسی (مشاهده) و ایجاد تغییر در برنامه در حال اجرا است ولی این مهم با زیر پا گذاشتن بعضی اصول ممکن شده‌است. برای نمونه با استفاده از بازتابش (و در صورت داشتن مجوز لازم ضمن اجرای برنامه) می‌توان به متدهای خصوصی دیگر کلاس‌ها دسترسی داشت.</p>
<p>زبان جاوا در مقابل زبانی مثل ++C ساده تر و یادگیری ان آسانتر است. این آسانتر بودن با حذف بسیاری از موارد که باعث قدرتمندتر بودن زبان ++C بوده‌اند ایجاد شده‌است. مهم‌ترین این موارد اشاره گرها و وراثت چندگانه بوده‌اند که در زبان جاوا یافت نمی‌شوند.</p>
<p>از آنجایی که جاوا زبانی با عدم وابستگی به بستر می‌باشد پس استفاده از توابع سیستم‌عامل در برنامه را مستقیماً نمی‌پذیرد. به همین صورت نمی‌توان مستقیماً از واسط‌های برنامه نویسی غیر از جاوا در آن استفاده نمود.</p>
<p>&nbsp;</p>
<p><strong>پاسخ به ایرادات</strong></p>
<p>سرعت پایین برنامه‌های جاوا در محیطی که اجرا می‌شوند ملاک کارایی نبوده زیرا در محیط وب مسئله‌ای که سرعت را کند می‌سازد، شبکه بوده و ابتدا باید سربار شبکه را از روی برنامه‌ها برداشت. از طرف دیگر در برنامه‌های رومیزی هم در JDK 5.0 و ۶٫۰، بهینه سازی بسیاری بوجود آمده که این مسئله باعث شده که در آخرین تست کارایی که انجام شده یک برنامه جاوا در محدودهٔ ۰٫۸ تا ۱٫۳ همان برنامه در ++C کارایی داشته باشد که ۱٫۳ آن مربوط به بخش واسط کاربری و سرعت ۰٫۸ آن مربوط به بسته تخلیه حافظه می‌شده که هیج الگوریتمی نتوانست از الگوریتم Garbage Collector جاوا پیشی بگیرد. همچنین سال ۱۹۹۹ در مقاله‌ای آقای Lutz Prechelt به این مسئله را ثابت کردند که تجربه برنامه‌نویسی که برنامه‌ای را می‌نویسد از انتخاب زبانی که برنامه برروی آن نوشته می‌شود در کارایی تأثیر بیشتری دارد و این بدان معناست که کارایی یک برنامه را برنامه‌نویس مشخص می‌کند و نه زبان برنامه‌نویسی( ایشان در همان مقاله از زبان جاوا استفاده نمودند تا ذهنیت بد را از بین ببرند)</p>
<p>همچنین در صنعت نرم‌افزار هزینه اصلی مربوط به ساخت نرم‌افزار است و نه تهیه سخت‌افزار برای دستیابی به سرعت بیشتر.</p>
<p>حذف اشاره‌گرها در جاوا به دلیل مشکلاتی بوده که آنها در طول تاریخشان بوجود آورده‌اند، اگرچه این موارد در برنامه‌های سیستمی لازم به‌نظر می‌رسد ولی در محیط‌های تحت‌وب که بستر اصلی جاوا هستند می‌توانند اثراتی به مراتب شدیدتر نسبت به آنچه در برنامه‌های سیستمی دارند داشته باشند و باعث می‌شود که توجه برنامه‌نویسان از مسائلی چون کارایی، قابلیت اطمینان و مقیاس‌پذیری برنامه به تنظیم اشاره‌گرها معطوف گردد.</p>
<p>وجود وراثت چندگانه در زبانی مانند ++C، باعث ایجاد مشکلات اساسی‌ای می‌گردید که اکثر برنامه‌نویسان ++C از آن دوری می‌کرده و هنوز هم می‌کنند. ولی قابلیت چندریخته شدن یک کلاس از لحاظ شی گرایی بسیار مهم بوده و بنابراین توجیهی برای وجود وراثت چندگانه را فراهم می‌نمود. در جاوا با وارد شدن مفهومی به نام واسط برنامه‌سازی (Interface)، دیگر نیازی به وجود وراثت چندگانه احساس نشد و بنابراین از زبان جاوا حذف گردید. در حال حاضر اکثر طراحان برنامه‌ها حتی به این نتیجه رسیده‌اند که وراثت تکی هم باعث ایجاد مشکل بوده و تا آنجایی که می‌شود باید از Composition استفاده نمود و در تمامی کتاب‌های طراحی که از سال ۲۰۰۰ به این طرف چاپ شده به آن اشاره نموده‌اند.</p>
<p>از ابتدای بوجود آمدن جاوا، کتابخانه JNI - Java Native Interface در آن وجود داشته که قابلیت فراخوانی و دستکاری برنامه‌هایی در ++C و ... را می‌داده که از نمونه‌های آن می‌توان به Jtwain که یک بسته‌ایست که از کتابخانه‌های ویندوز برای اسکن عکس استفاده می‌کند، یا SWT که یک بسته نرم‌افزاریست که از کتابخانه‌های ویندوز و لینوکس (برحسب سیستم‌عامل) برای ساخت واسط کاربری (UI) استفاده می‌کند، نام برد.</p>
<p>بسیاری از موارد یاد شده به عنوان ایرادات به جاوا به عنوان ایرادات به طراحی زبان‌های سطح بالا هستند و نه جاوا.</p>
<p>&nbsp;</p>
<p style="text-align: right;"><strong>یک اشتباه متداول</strong></p>
<p style="text-align: right;">برخی مردم به علت شباهت اسمی، جاوا و جاوااسکریپت را با هم اشتباه می‌گیرند. در حالیکه این دو زبان گرچه در ظاهر و کلمات شبیهند ولی بطور ساختاری با یکدیگر متفاوتند. جاوا اسکریپت محصول شرکت نت اسکیپ است.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/02/22/%d8%ac%d8%a7%d9%88%d8%a7-%d8%b2%d8%a8%d8%a7%d9%86-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87%e2%80%8c%d9%86%d9%88%db%8c%d8%b3%db%8c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>میزبانی وب</title>
		<link>http://www.aminamjadi.com/1390/02/21/%d9%85%db%8c%d8%b2%d8%a8%d8%a7%d9%86%db%8c-%d9%88%d8%a8/</link>
		<comments>http://www.aminamjadi.com/1390/02/21/%d9%85%db%8c%d8%b2%d8%a8%d8%a7%d9%86%db%8c-%d9%88%d8%a8/#comments</comments>
		<pubDate>Wed, 11 May 2011 17:41:31 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[Cpanel]]></category>
		<category><![CDATA[Direct Admin]]></category>
		<category><![CDATA[Helm]]></category>
		<category><![CDATA[LXAdmin]]></category>
		<category><![CDATA[OpenVZ]]></category>
		<category><![CDATA[Plesk]]></category>
		<category><![CDATA[Virtuozzo]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[Xen]]></category>
		<category><![CDATA[ال‌اکس‌ادمین]]></category>
		<category><![CDATA[انتقال داده‌ها]]></category>
		<category><![CDATA[اوپن‌وی‌زد]]></category>
		<category><![CDATA[حجم]]></category>
		<category><![CDATA[خدمات]]></category>
		<category><![CDATA[خوشه میزبان]]></category>
		<category><![CDATA[دایرکت ادمین]]></category>
		<category><![CDATA[دیسک]]></category>
		<category><![CDATA[سرور]]></category>
		<category><![CDATA[سرور اختصاصی]]></category>
		<category><![CDATA[سرور مجازی]]></category>
		<category><![CDATA[سرورهای ایرانی]]></category>
		<category><![CDATA[سی‌پنل]]></category>
		<category><![CDATA[فضای رایگان]]></category>
		<category><![CDATA[لینوکس]]></category>
		<category><![CDATA[میزبان شبکه‌ای]]></category>
		<category><![CDATA[میزبانی اشتراکی]]></category>
		<category><![CDATA[میزبانی وب]]></category>
		<category><![CDATA[میزبانی وب در ایران]]></category>
		<category><![CDATA[نمایندهٔ فروش]]></category>
		<category><![CDATA[هلم]]></category>
		<category><![CDATA[وب هُستینگ]]></category>
		<category><![CDATA[ویندوز]]></category>
		<category><![CDATA[پلسک]]></category>
		<category><![CDATA[کنترل پنل]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=166</guid>
		<description><![CDATA[میزبانی وب یا وب هُستینگ (به انگلیسی: Web Hosting) به مفهوم فراهم ساختن فضایی است که کاربر می‌تواند فایل‌های وب‌گاه خود را در آن قرار دهد. تعدادی سرور در یک مرکز داده وب سایت‌ها از مجموعه‌ای از فایلهای مختلف مانند تصاویر، متون و فایلهای برنامه نویسی شده به زبانهای مختلف و سایر اسناد مربوطه تشکیل [...]]]></description>
			<content:encoded><![CDATA[<p>میزبانی وب یا وب هُستینگ (به انگلیسی: Web Hosting) به مفهوم فراهم ساختن فضایی است که کاربر می‌تواند فایل‌های وب‌گاه خود را در آن قرار دهد.</p>
<p style="text-align: center;"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/6/62/KN-Servers2.JPG/220px-KN-Servers2.JPG" alt="" width="220" height="354" /></p>
<p>تعدادی سرور در یک مرکز داده وب سایت‌ها از مجموعه‌ای از فایلهای مختلف مانند تصاویر، متون و فایلهای برنامه نویسی شده به زبانهای مختلف و سایر اسناد مربوطه تشکیل می‌شود که به منظوری خاص به شکلی با هم مرتبط شده‌اند. هر شخصی که نرم‌افزارهای لازم و دسترسی به این فایلها را داشته باشد امکان بازدید از این سایت را دارد. حال برای اینکه همه مردم امکان دسترسی به فایلها را داشته باشند نیاز است تا فایلها در کامپیوتری قرار گیرند که همواره به اینترنت پرسرعت متصل است به این کامپیوترها «سرویس دهنده» یا «سرور» می‌گویند.</p>
<p>اما این سرورها باید امکانات دیگری نیز داشته باشد از آن جمله می‌توان به موارد زیر اشاره کرد:</p>
<ul>
<li>در صورتی که حجم قابل توجهی از بازدید کننده به سایت مراجعه کنند امکان پاسخگویی به همه آنها را داشته باشد. بنابر این نیاز است تا یک کامپیوتر قدرتمند از لحاظ مشخصات قطعات داخلی باشد.</li>
<li>نرم‌افزارهای لازم برای اجرای انواع فایلها از لحاظ نوع برنامه نویسی را داشته باشد.</li>
<li>نرم‌افزارهای مورد نیاز برای مدیریت بخشهای مختلف سایت و پست الکترونیک و&#8230; را در اختیار صاحبان وب سایتها قرار دهد.</li>
</ul>
<p>هر کامپیوتری می‌تواند یک سرور باشد اما از آنجا که هزینه‌های مورد نیاز برای فراهم کردن تجهیزات و نرم‌افزارهای لازم و یا نیروی پشتیبانی برای صاحبان همه وب سایتها به صرفه نیست لذا شرکتهایی این مسئولیت را می‌پذیرند و با فراهم آوردن لوازم کار در سطح وسیع بخشی از فضای دیسک سخت سرورهای خود را به صورت اجاره‌ای در اختیار متقاضیان قرار می‌دهند. به این شرکتها که خدمات میزبانی وب یا هاستینگ ارائه می‌کنند در اصطلاح «میزبان» یا «هاست» می‌گویند.</p>
<p>سرویسهای میزبانی وب بر اساس نوع سیستم‌عاملی که بر روی سرورها نصب می‌باشد و طبیعتا نرم‌افزارها و فایلهایی را که پشتیبانی می‌کنند شاخه بندی می‌شوند. مانند هاست ویندوز یا هاست لینوکس و&#8230;</p>
<p>سرویسهای میزبانی مشخصاتی را نیز به همراه دارند که نشان دهنده کیفیت و امکانات آنها می‌باشد. از آن جمله می‌توان به موارد زیر اشاره کرد:</p>
<p><strong>حجم دیسک</strong></p>
<p>حجم دیسک (به انگلیسی: Disc space) به مقدار فضایی گفته می‌شود که شرکت میزبان از دیسک سخت سرورهای خود در اختیار شما قرار می‌دهد این فضا از چند مگابایت تا چند گیگابایت براساس نیاز متفاوت است. مجموع حجم فایلهای ارسالی به سرور اجاره کننده باید کمتر یا مساوی با فضای اجاره شده باشد. (البته این میزان فضا در اکثر سرویس دهنده‌ها در هر زمان قابل تغییر می‌باشد).</p>
<p><strong>محدودیت انتقال داده‌ها</strong></p>
<p>محدودیت و میزان انتقال داده‌ها (به انگلیسی: Data Transfer) که به آن ترافیک ماهیانه نیز گفته می‌شود میزان تبادل اطلاعات با کامپیوتر میزبان را مشخص می‌کند. به این معنی که میزان مجموع حجم فایلهای دریافت شده یا ارسال شده به فضای اجاره شده به صورت ماهیانه مشخص می‌شود و نباید از آن حجم بیشتر باشد. نکته: در نظر داشته باشد هر بار که سایت توسط یک بازدید کننده باز می‌شود مقداری اطلاعات و فایل بین سرور میزبان و کامپیوتر بازدید کننده تبادل می‌شود بنابر این تعداد بازدید از یک سایت اگر بالا باشد به نسبت نوع فایلهای استفاده شده در سایت، می‌تواند حجم قابل توجهی از اطلاعات تبادل شود.</p>
<p>تعداد دامنه‌هایی که امکان ایجاد آنها بر روی یک فضای اجاره‌ای وجود دارد، تعداد بانکها اطلاعاتی و نوع و حجم آنها و یا نوع پست الکترونیک و تعداد آنها و چند مورد دیگر مشخص کننده کیفیت سرویسهای میزبانی و شرکتهای میزبان هستند.</p>
<p>مالکان و مدیران سایتها براساس نیاز خود انتخاب می‌کنند.</p>
<p><span id="more-166"></span></p>
<p><strong>انواع خدمات میزبانی وب</strong></p>
<p>خدمات میزبانی وب معمولاً به موارد زیر تقسیم‌بندی می‌شوند:</p>
<p><strong>میزبانی اشتراکی</strong><br />
در میزبانی وب معمولاً شرکت‌های ارائه دهنده این خدمات یک سرور تهیه می‌کنند و توسط کنترل‌پنل‌ها امکانات و فضای آن را بین مشتریان خود تقسیم بندی می‌کنند، که به این خدمات میزبانی اشتراکی یا (به انگلیسی: Shared Hosting) گفته می‌شود.</p>
<p><strong>ویندوز</strong></p>
<p>منظور از خدمات ویندوز و در اصطلاح هُست ویندوز مربوط به سرور آن است که معمولاً ویندوز سرور می‌باشد.تفاوت اصلی بین هُست ویندوز و سایر خدمات میزبانی وب، پشتیبانی کردن این سرورها از زبان‌های ASP و ASP.NET و همچنین بانک اطلاعتی MSSQL می‌باشد. البته هُست‌های ویندوز به علت نیاز به خرید لیسانس ویندوز سرور از ماکروسافت هزینه بالاتری نسبت به هُست لینوکس دارند. معمولاً برای سرورهای ویندوز از کنترل‌پنل‌های پلسک، هلم، وب سایت پنل و هاستینگ کنترولر استفاده می‌شود.</p>
<p><strong>لینوکس</strong></p>
<p>منظور از خدمات هُست لینوکس و در اصطلاح هُست لینوکس مربوط به سرورهای لینوکس است. سرورهای لینوکس از محبوبت خاصی برخوردار هستند که مهمترین عامل آن کد باز بودن و رایگان بودن آن است. هُست لینوکس بیشتر برای استفاده از زبان PHP و همچنین بانک اطلاعتی MySql است. معمولا برای هُست‌های لینوکس از کنترل‌پنل‌های سی‌پنل، دایرکت ادمین، پلسک و کلوکزو استفاده می‌شود.</p>
<p><strong>فضای رایگان</strong></p>
<p>البته وبگاه‌هایی هستند که در قبال ارائه خدمات میزبانی وب از مشترک خود هزینه‌ای دریافت نمی‌کنند. که به هُست رایگان شهرت دارند، که اکثرا با قرار دادن تبلیغات اجباری هزینه‌های رایانه سرور را تامین می‌کنند.</p>
<p><strong>نمایندهٔ فروش</strong></p>
<p>نماینده فروش خدمات میزبانی وب (به انگلیسی: reseller) این اجازه را به مشتریان می‌دهد تا خود به عنوان فروشنده خدمات میزبانی اقدام نمایند و به کسب درآمد بپردازند. اغلب نمایندگان فروش فضایی را از یک ارایه دهندهٔ هُستینگ خریداری مینمایند و بوسیلهٔ کنترل‌پنل هُست آنرا بین مشتریان خود تقسیم میکنند.</p>
<p><strong>سرور مجازی</strong></p>
<p>سرور مجازی یک نوع سرور اینترنتی است که به وسیله نرم‌افزارهای مخصوصی از یک سرور قوی تر ایجاد می‌شود. ویژگی اصلی و برتر سرور مجازی نسبت به هُست اشتراکی، محدود و اختصاصی بودن میزان حافظه و سایر امکانات عمده‌است که به مانند هُست اشتراکی بین چندین مشترک تقسیم نمی‌شود، به‌طوری که از لحاظ ظاهری سرور مجازی تفاوت چندانی با سرور اختصاصی ندارد.</p>
<p>مجازی سازی یک سرور اختصاصی و تقسیم آن سرور به چندین سرور مجازی توسط نرم‌افزارهای مخصوصی صورت می‌گیرد.این نرم‌افزارها در معین کردن هزینه یک سرور مجازی تاثیر فراوانی دارند.</p>
<p><strong>از جمله این نرم‌افزارها:</strong></p>
<ul>
<li>اوپن‌وی‌زد (به انگلیسی: OpenVZ)</li>
<li>ویرچوزو (به انگلیسی: Virtuozzo)</li>
<li>زٍن (به انگلیسی: Xen)</li>
</ul>
<p><strong>سرور اختصاصی</strong></p>
<p>ابر هُستینگ</p>
<p>پلت فرم جدید از میزبانی وب می‌باشد که به مشتریان این اجازه را می‌دهد که از خدمات میزبانی وب قدرتمند و قابل اعتماد بر روی خوشه سرورهای متعادل شده بر اساس میزان پرداخت وجه استفاده کنند.</p>
<p><strong>خوشه میزبان</strong></p>
<p>شامل چند وب سرور با محتوای یکسان است تا از منابع بهره‌برداری بیشتری شود. خوشه میزبان یک راه حل مناسب برای دسترسی بالا به سرور اختصاصی می‌باشد. در میزبانی به صورت خوشه ممکن است سرویس پایگاه داده (به انگلیسی: database) از وب سرورها جدا شوند، که این امر باعث افزایش سرعت پردازش داده بر روی وب سرور اصلی خواهد شد.</p>
<p><strong>میزبان شبکه‌ای</strong></p>
<p>این شکل از توزیع میزبانی وب زمانی که چند گروه از سرویس دهنده‌های خوشه‌ای مانند شبکه‌ای که شامل چند گره است گفته می شود.</p>
<p><strong>میزبانی وب در ایران</strong></p>
<p>بیشتر شرکت‌های میزبانی وب در ایران به علت عوامل نا مساعد در مراکز داده (به انگلیسی: Datacenter) ایرانی و همچنین پهنای باند کم و هزینه زیاد برای تهیه سرورهای خود از مراکز داده‌های خارج از ایران مخصوصا در کشورهای آمریکا، کانادا و انگلیس بهره می‌گیرند! که مهمترین ویژگی برتر نسبت به مراکز داده در ایران سرعت بالا و هزینه کمتر است.البته به علت تحریم‌های کشور آمریکا علیه ایران و همچنین عدم گسترش کارت‌های اعتباری بین‌المللی در ایران تهیه سرور در خارج از ایران نیز با مشکلات خاص خود روربرو است.</p>
<p><strong>میزبانی وب در سرورهای ایرانی</strong></p>
<p>بنا به مطلب بالا میزبانی وب در سرورهای ایران از سرعت کم و هزینه بالایی برخوردار است ولی از دیگر مزایای آن می‌توان به در دسترس بودن سایت مورد نظر برای تمامی کاربران اشاره کرد و فالس بودن آن(رعایت نشدن قوانین کپی رایت)به علت رعابت قوانین کپی رایت در سایر کشورها بیشتر کاربران اینترنت که نیاز به هُست فالس دارند به سرورهای ایرانی روی می‌آورند که این امر باعث افزایش طرفدارانی شده‌است.</p>
<p><strong>کنترل پنل</strong></p>
<p>شرکت‌های ارائه‌دهنده خدمات میزبانی وب برای مشتریان خود کنترل پنلی ارائه می‌دهند تا مشترکین بتواند فضای میزبانی خود را کنترل و مدیریت کند که در کنار کنترل فضای میزبانی این کنترل پنل‌ها خدماتی از قبیل پارک دامنه، ایجاد زیر دامنه، ساخت و مدیریت پایگاه‌داده، کنترل آمار وبگاه و مدیریت پست الکترونیک نیز قرار دارد.</p>
<p>از جمله کنترل‌پنل‌های پرکاربرد و مشهور:</p>
<p><strong>سی‌پنل</strong> (به انگلیسی: Cpanel):محبوب‌ترین کنترل‌پنل میزبانی وب می‌باشد که برای سرورهای لینوکس استفاده می‌شود، اما اخیرا با شدت گرفتن تحریم‌ها بر علیه ایران به محض شناسایی دامنه‌های ایرانی این کنترل پنل خدمات خود را قطع می‌کند و به اصطلاح لیسانس خود بر روی ان سرور را باطل می‌کند.</p>
<p><strong>پلسک</strong> (به انگلیسی: Plesk):یکی دیگر از کنترل‌پنل‌های مشهور می‌باشد که هم بر روی ویندوز و هم بر روی لینوکس قابل استفاده‌است، که با وجود سی‌پنل این کنترل پنل بیتشر برای سرورهای ویندوز استفاده می‌شود.</p>
<p><strong>دایرکت ادمین</strong> (به انگلیسی: Direct Admin):کنترل پنلی ساده تر نسبت به دو کنترل پنل بالا است و هزینه لیسانس آن نیز نسبت به سی‌پنل و پلسک کمتر می‌باشد. این کنترل‌پنل بعد از آغاز تحریم‌ها بر علیه ایران در بین شرکت‌های خدمات میزبانی وب بیشتر مورد توجه قرار گرفته‌است.</p>
<p><strong>ال‌اکس‌ادمین</strong> (به انگلیسی: LXAdmin):این کنترل پنل قیمت بسیار اندکی دارد و بیشتر در سرورهای لینوکس استفاده می‌شود.</p>
<p><strong>هلم</strong> (به انگلیسی: Helm): این کنترل پنل برای سرورهای ویندوز است.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/02/21/%d9%85%db%8c%d8%b2%d8%a8%d8%a7%d9%86%db%8c-%d9%88%d8%a8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>خدمات وب</title>
		<link>http://www.aminamjadi.com/1390/02/21/%d8%ae%d8%af%d9%85%d8%a7%d8%aa-%d9%88%d8%a8/</link>
		<comments>http://www.aminamjadi.com/1390/02/21/%d8%ae%d8%af%d9%85%d8%a7%d8%aa-%d9%88%d8%a8/#comments</comments>
		<pubDate>Wed, 11 May 2011 17:05:15 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[UDDI]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[WSDL]]></category>
		<category><![CDATA[خدمات]]></category>
		<category><![CDATA[میزبانی]]></category>
		<category><![CDATA[پروتکل]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=164</guid>
		<description><![CDATA[با کمک فن‌آوری خدمات وب (Web services) می‌شود سرویس‌ها و خدمتهای گوناگون را در روی اینترنت پراکنده کرد. منظور از خدمت، واحدی کوچک یا بزرگ از نرم‌افزار آماده به کار است که می‌تواند کار یا خدمتی را برای مشترکان خود انجام دهد میزبانی صفحات وب میزبانی در واقع فضای مورد نیاز شما را برای ساخت [...]]]></description>
			<content:encoded><![CDATA[<p>با کمک فن‌آوری خدمات وب (Web services) می‌شود سرویس‌ها و خدمتهای گوناگون را در روی اینترنت پراکنده کرد. منظور از خدمت، واحدی کوچک یا بزرگ از نرم‌افزار آماده به کار است که می‌تواند کار یا خدمتی را برای مشترکان خود انجام دهد</p>
<p><strong>میزبانی صفحات وب</strong></p>
<p>میزبانی در واقع فضای مورد نیاز شما را برای ساخت وب‌گاه در اختیار شما قرار می‌دهد.</p>
<p><strong>مزایای مربوط به خدمات وب</strong></p>
<p>بزرگ‌ترین مزیت روش نو از ناحیهٔ حضور اکس‌ام‌ال در اکثر ساختارهای مربوط به خدمات وب می‌آید. نیاز به آنهمه اکس‌ام‌ال به خاطر غلبه بر عدم مقیاس‌پذیری (scalability) شیوه‌های پیشین در مهندسی و ساخت اینترت است. از آنجا که اکس‌ام‌ال متن گراست text-based، شمه‌ای از نرمی و انعطاف پزیری شگفت آوری که در زبان انسان موجود است با سختی و شکنندگی روشهای ماشینی ترکیب شده و ما را به ساخت سامانه‌های بسیار گسترش‌پذیر توانا می‌گرداند.</p>
<p><strong>استانداردهای خدمات وب:</strong></p>
<p><strong>پروتکل دسترسی آسان به اشیاء (SOAP)</strong></p>
<p>بر اساس پروتکل دستیابی آسان به اشیاء است که تمامی خدمات وب به گردش در می‌آید. منظور از پروتکل، مجموعه شرح قواعد و فرمت‌های مربوط به ارسال پیامهای مخابراتی از یک ماشین به ماشین دیگر است. SOAP پروتکل ساده‌ای ست که به منظور سازگاری (compatibility) با سکوهای (platforms) مختلف و نیز سیستم‌های عامل (operating systems) گوناگون نوشته شده است. هدف اساسی این پروتکل را باید امکان پذیری مخابرات ماشین به ماشین در محیط‌های محاسباتی نامتجانس (heterogeneous) ذکر کرد.</p>
<p><strong>زبان توصیف خدمات وب (WSDL)</strong></p>
<p>هر چه بیشتر پرتکل‌های مخابراتی و فرمت پیامها بر روی وب به سمت استاندارد شدن پیش می‌رود، امکان و اهمیت توصیف مخابرات و امور تبادل یافته، به شیوه‌های ساختارپذیر (structured) نیز فزونی می‌یابد. زبان توصیف خدمات وب درست به منظور برآورده نمودن همین نیاز ابداع گردیده است، و این مهم را با تعریف یک گرامر اکس‌ام‌ال انجام می‌دهد. این گرامر به خصوص، خدمات موجود در شبکه را به صورت مجموعه‌هایی از نقاط پایانی مخابراتی بیان می‌نماید که قادرند به تبادل پیام‌های مخابراتی بپردازند مبادرت ورزند.</p>
<p><strong>شرح، کشف، و یکپارچه‌سازی فراگیر (UDDI)</strong></p>
<p>به وسیله فناوری شرح، کشف، و یکپارچه‌سازی فراگیر (Universal Description, Discovery, and Integration) می‌توان به انتشار و نیز جستجوی خدمات وب اقدام کرد. این فناوری، خدمات وب را سامان داده، و پس از شرح آن ها، اطلاعات بدست آمده را در یک جایگاه مرکزی قرار می‌دهد.<br />
دراینجا بیشتر تاکیدمان برتعامل با منابعی است که حالتپذیر(Statefull) هستند به جای استفاده از پیغامها و یا عملیاتها.</p>
<p><span id="more-164"></span></p>
<p><strong>انواع سبک‌های استفاده از وب سرویسها</strong></p>
<p>==روش فراخوانی از راه دور &#8211; RPC<br />
وب سرویس‌های این نوع، توابع توزیع شده ای رااجرا می کنند که فراخوانی شان بسیار برای تولیدگرها آشناست، بطور معمول ساده‌ترین واحد این مدل فراخوانی یک عملیاتی است که یک wsdl در پی دارد روشهای دیگری که با کارکرد مشابه به عنوان شی RPC می توان نام برد, Object Management Group&#8217;s (OMG) و Common Object Request Broker Architecture (CORBA) و Microsoft&#8217;s Distributed Component Object Model (DCOM) و یا سان مایکروسیستم جاوا ست که همان (RMI)نامیده میشود.<br />
==معماری سرویس گرا &#8211; Service-oriented architecture<br />
وب سرویس‌ها را برای پیاده سازی معماری با رویکرد به مفاهیم معماری سرویس گرا (SOA) می توان اجرا کرد که مبتنی است بر ساده‌ترین واحدهای ارتباطی که همان پیغام‌ها میباشند در تقابل با اعمال (operation)، به همین دلیل است که غالبا با نام سرویس‌های پیغام گرا نامیده میشوند . این دست از وب سرویسها توسط اکثر تولیدکنندگان نرم‌افزار عمده در دنیا پشتیبانی می گردد، بر خلاف RPC در این مدل امکان اتصالات سست(loose coupling ) محقق تر است بدلیل اینکه تاکید بر روی CONTRACT ی است که WSDL تولید کرده به جای اینکه بروی جزئیات زمینه اجرا باشد.<br />
==نمایانگر حالت انتقال &#8211; (Representational state transfer (REST)<br />
این مدل تلاشی است در جهت توصیف و یا ساخت معماری هایی که ار http و یا پروتکل‌های مشابه ای استفاده می کنند که هدفشان محدود کرد واسطه(interface) هاست به استفاده از اعمال شناخته شده واستاندارد (مثل GET, POST, PUT, DELETE بروی HTTP) دراینجا بیشتر تاکیدمان برتعامل با منابعی است که حالتپذیر(Statefull) هستند به جای استفاده از پیغامها و یا عملیاتها. یک معماری مبتنی بر REST که RESTfull نامیده می‌شود می تواند برای تعریف یک پیغام سوپ از WSDL بروی HTTP استفاده کند یا می تواند یک کلاس انتزاعی باشد که صرفا بروی سوپ بنا شده باشد، یا می تواند بلکل بدون هیچ استفاده ای از سوپ ساخته شود. WSDL 2 نتنها اتصال به همه متدهای ورژن یک را امکانپذیر می‌کند بلکه تمامی متدهای اتصال به http را ساپورت می‌کند، بنابراین به نظر می رسد که برای وب سروی هایی از نوع REST این اجرا بهنرین باشد، هر جند که پشتیبانی از این مشخصات فنی معماری، درون کیت‌های برنامه نویسی روز دنیا هنوز ضعیف می باشد. این برنامه‌ها معمولاً به سمت تولید ابزارهایی برای WSDL 1 تمایل دارند</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/02/21/%d8%ae%d8%af%d9%85%d8%a7%d8%aa-%d9%88%d8%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>اکس‌ام‌ال</title>
		<link>http://www.aminamjadi.com/1390/02/21/%d8%a7%da%a9%d8%b3%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/</link>
		<comments>http://www.aminamjadi.com/1390/02/21/%d8%a7%da%a9%d8%b3%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/#comments</comments>
		<pubDate>Wed, 11 May 2011 16:49:18 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[طراحی]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[اچ‌تی‌ام‌ال]]></category>
		<category><![CDATA[اکس‌ام‌ال]]></category>
		<category><![CDATA[اکس‌اچ‌تی‌ام‌ال]]></category>
		<category><![CDATA[فناوری]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=162</guid>
		<description><![CDATA[ایجاد فناوری اکس‌ام‌ال یا زبان نشانه‌گذاری امتدادپذیر (eXtensible Markup Language) را باید بدون تردید یکی از بزرگ‌ترین و اساسی‌ترین گامهایی به حساب آورد که در مسیر حلّ مشکل مقیاس‌پذیری در اینترنت مدرن برداشته شده‌است. پس از ایجاد اکس‌ام‌ال توسّط کنسرسیوم وب جهان‌شمول (W3C) در سال ۱۹۹۶ (میلادی)، دست‌اندرکاران بسیاری از پروژه‌های محاسبات گسترده به استفادهٔ گسترده [...]]]></description>
			<content:encoded><![CDATA[<p>ایجاد فناوری اکس‌ام‌ال یا زبان نشانه‌گذاری امتدادپذیر (eXtensible Markup Language) را باید بدون تردید یکی از بزرگ‌ترین و اساسی‌ترین گامهایی به حساب آورد که در مسیر حلّ مشکل مقیاس‌پذیری در اینترنت مدرن برداشته شده‌است. پس از ایجاد اکس‌ام‌ال توسّط کنسرسیوم وب جهان‌شمول (W3C) در سال ۱۹۹۶ (میلادی)، دست‌اندرکاران بسیاری از پروژه‌های محاسبات گسترده به استفادهٔ گسترده از آن روی آوردند.<br />
در حال حاضر، گوناگونی، میزان، و ابعاد فراوان به‌کارگیری اکس‌ام‌ال در اغلب زمینه‌ها و ساختارهای اینترنت امروزین به راستی شگفت‌آور است. فقط به عنوان نمونه، باید یادآور شد که تقریباً تمامی فنّآوری‌های خدمات وب، گرافیک برداری مقیاس‌پذیر، آردی‌اف، و بسیاری از موارد دیگر، تنها با اکس‌ام‌ال انجام‌پذیر است.<br />
چرایی و چگونگی این امر برای فهم آسانتر و درک همه جانبه‌تر اینترنت در حال حاضر، و به ویژه، جهت آشنایی با تدابیری که بشر برای هموار نمودن راه‌های امتداد و گسترش آن در آینده اتّخاذ خواهد کرد، از اهمّیّت بالایی برخوردار است.</p>
<p>بسیاری از پرسش‌های عمده پیرامون پدیده‌های نوین جهانی، و به ویژه موهبت عالم‌گیر اینترنت را ساده‌تر و منطقی‌تر است که با مطالعه و شناخت هر چه واقعی‌تر و همه‌جانبه‌تر تاریخ و فلسفه علوم، مخصوصا، از ابتدای دوران تولد دوباره تا به امروز پاسخ داد.<br />
آفرینش و نمایش دانشاصلی‌ترین و ذاتی‌ترین وظیفهٔ زبان اکس‌ام‌ال بیان، نمایش، و تحت سیطره در آوردن داده‌ها ست. وقتی از داده‌ها اسم می‌بریم، در واقع، اطلاعات و دانش هم گفته‌ایم.<br />
تبیین نقش و اهمیت اکس‌ام‌ال در خلق و نمایش انعطاف‌پذیر، قابل گسترش، و مقیاس‌یاب دانش را بهتر است با اشاره‌ای گذرا بر نقش عنصر خط در هنر نقاشی آغاز کنیم. در نقاشی، استفاده از خط نقطهٔ آغاز و شروع خلق و آفرینش هنری هم هست. در واقع، پیش از کشیدن اولین خط فقط یک‌نواختی، بی‌دانشی، بی‌نظمی، و بی‌ساختاری مطلق بر تمامی فضا حاکم است.<br />
خوب که بیندیشیم، زبان اکس‌ام‌ال درست همین کار را با برچسب زدن، نام‌گذاشتن، و صفات برای نام‌ها تعریف کردن در مورد داده‌های بی‌ساختار انجام می‌دهد.</p>
<p><span id="more-162"></span></p>
<p>به عنوان نمونه‌ای بسیار ساده از یک سند اکس‌ام‌ال می‌توان به بررسی مورد زیر پرداخت:</p>
<div dir="ltr">
<div>
<pre>&lt;University&gt;
&lt;Department&gt;Mathematics&lt;/Department&gt;
&lt;Department&gt;Biology&lt;/Department&gt;
&lt;/University&gt;</pre>
</div>
</div>
<p>بر خلاف سندهای اچ‌تی‌ام‌ال و اکس‌اچ‌تی‌ام‌ال که در آن‌ها از عناصر و برچسب‌های از پیش تعبیه یافته استفاده می‌کنیم، در سندهای اکس‌ام‌ال تمامی برچسب‌ها را خود نام‌گذاری و انتخاب می‌نماییم.</p>
<p>اگر چه برچسب‌های (tags) متعدّدی می‌تواند در هر سند موجود باشد، فقط یکی از آنها &#8211; و همواره یکی از آنها (در اینجا University) &#8211; نقش ریشه و در خودگیرندهٔ سایر برچسب‌ها را برعهده دارد.</p>
<p>چنانچه نمونهٔ اکس‌ام‌ال داده‌شده در بالا را، عیناً، در فایلی که با xml. ختم می‌شود ذخیره کنیم، می‌توانیم با یکی از متن‌شکن‌های اکس‌ام‌ال شروع به شکستن و پردازش آن بنماییم. از آن‌جا که شرکت مایکروسافت یکی از متن‌شکن‌های اکس‌ام‌ال، موسوم به ام‌اس‌اکس‌ام‌ال را، در درون مرورگر خود یعنی آی‌ای (IE) تعبیه نموده‌است، فقط کافی‌ست سند اکس‌ام‌ال خود را با آی‌ای باز کنیم.</p>
<p>در اینجا، برای مثال بالا صفت خصوصی بودن برای نام یا مفهوم دانشگاه تعیین شده‌است:</p>
<div dir="ltr">
<div>
<pre>&lt;University Category = "Private"&gt;
&lt;Department&gt;Mathematics&lt;/Department&gt;
&lt;Department&gt;Biology&lt;/Department&gt;
&lt;/University&gt;</pre>
</div>
</div>
<p>صفات مورد نظر برای هریک از عناصر اکس‌ام‌ال می‌تواند به هر تعداد باشد، و به هر ترتیبی بیاید، ولی، همواره باید آن‌ها را فقط در درون بر چسب شروع جای داد، و نه هیچ کجای دیگر.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/02/21/%d8%a7%da%a9%d8%b3%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>اکس‌اچ‌تی‌ام‌ال</title>
		<link>http://www.aminamjadi.com/1390/02/21/%d8%a7%da%a9%d8%b3%e2%80%8c%d8%a7%da%86%e2%80%8c%d8%aa%db%8c%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/</link>
		<comments>http://www.aminamjadi.com/1390/02/21/%d8%a7%da%a9%d8%b3%e2%80%8c%d8%a7%da%86%e2%80%8c%d8%aa%db%8c%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/#comments</comments>
		<pubDate>Wed, 11 May 2011 16:37:34 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[طراحی]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[body]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML4]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[اکس‌اچ‌تی‌ام‌ال]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=160</guid>
		<description><![CDATA[زبان امتدادپذیر نشانه‌گذاری فرامتن یا اکس‌اچ‌تی‌ام‌ال (Extensible HyperText Markup Language &#8211; XHTML) همان اچ‌تی‌ام‌ال است به همراه رعایت دقیق تمامی قواعد و دستورات نحوی نزدیک‌تر به زبان اکس‌ام‌ال که موجبات افزایش اطمینان از عمل‌کرد صححیح سندها در شرایط پیچیده‌تر موجود در اینترنت امروزین را فراهم می‌سازد. XHTMLها، نوع‌های سندها و ماژول‌ها در حال حاضر و [...]]]></description>
			<content:encoded><![CDATA[<p>زبان امتدادپذیر نشانه‌گذاری فرامتن یا اکس‌اچ‌تی‌ام‌ال (Extensible HyperText Markup Language &#8211; XHTML) همان اچ‌تی‌ام‌ال است به همراه رعایت دقیق تمامی قواعد و دستورات نحوی نزدیک‌تر به زبان اکس‌ام‌ال که موجبات افزایش اطمینان از عمل‌کرد صححیح سندها در شرایط پیچیده‌تر موجود در اینترنت امروزین را فراهم می‌سازد. XHTMLها، نوع‌های سندها و ماژول‌ها در حال حاضر و در آینده هستند که در واقع زیر مجموعه و گسترش یافته HTML4 است. این نوع اسناد بر پایه XML هستند هستند و برای کار در ترکیب با عامل کاربر مبتنی بر XML طراحی شده‌اند.<br />
XHTML جایگزینی برای HTML و در واقع آخرین نسخه آن در حال حاضر است.</p>
<p>نیاز برای ترکیب بندی جدید html به این علت است که مفاهیم جهانی وب تنها به کامپیوترها ارسال نمی‌شوند بلکه به وسایلی مانند دستگاه‌های موبایل نیز فرستاده می‌شوند که در این مورد منابع زیادی برای پشتیبانی ازترکیب‌های html نمی‌توانند اضافه شوند. ویژگی مفیدی که XHTML از XML به ارث برده‌است، namespaceهای آن است. با namespaceها نویسنده می‌تواند ویژگی‌ها و عناصر دلخواه خود را تعریف کند.</p>
<p><span id="more-160"></span></p>
<p><strong>تفاوت‌ها با HTML</strong></p>
<p>تفاوت مهم آن‌ها در این است که اسناد در XHTML باید به درستی نوشته شوندو تمامی عناصر باید همانند عناصر در XML بسته شوند. در XML تمامی خاصیت‌ها و عناصر به بزرگی و کوچکی حروف حساسند. ولی در html اینگونه نیست.</p>
<p>مثلاً این کد در مرورگر به خوبی کار خواهد کرد حتی با آنکه قوانین html را رعایت نکرده‌است:</p>
<div dir="ltr">
<div>
<pre>&lt;Html&gt;
&lt;head&gt;
&lt;title&gt;This is bad HTML
&lt;body&gt;
&lt;h1&gt;Bad HTML&lt;br&gt;
&lt;/Body&gt;
&lt;/head&gt;
&lt;/html&gt;</pre>
</div>
</div>
<p>چرا که در آن برچسب‌های &lt;title&gt; و &lt;h1&gt; بسته نشده‌اند و در برچسب‌های &lt;html&gt; و &lt;body&gt; از حروف بزرگ استفاده شده‌است.</p>
<p>اما اسناد در XHTML باید به درستی نوشته شوند:</p>
<div dir="ltr">
<div>
<pre>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;This is bad HTML&lt;/title&gt;
&lt;body&gt;
&lt;h1&gt;Bad HTML&lt;br /&gt;&lt;/h1&gt;
&lt;/body&gt;
&lt;/head&gt;
&lt;/html&gt;</pre>
</div>
</div>
<p>علاوه بر این‌ها، اسناد XHTML نباید دارای برچسب خالی باشند.<br />
مانند برچسب‌های &lt;br&gt; (رفتن به سر ِ خط) و &lt;hr&gt; (ایجاد خط افقی در سند) که در زبان XHTML باید به صورت &lt;/ br&gt; و &lt;/ hr&gt; نوشته شوند.</p>
<p>تفاوت دیگر، ساختار بندی ترتیب باز کردن و بستن برچسب‌هاست که ابتدا باید برچسب زیرمجموعه بسته شود.</p>
<ul>
<li>غلط: &lt;b&gt; &lt;i&gt; bold &lt;/b&gt; &lt;/i&gt;</li>
<li>درست: &lt;b&gt; &lt;i&gt; bold &lt;/i&gt; &lt;/b&gt;</li>
</ul>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/02/21/%d8%a7%da%a9%d8%b3%e2%80%8c%d8%a7%da%86%e2%80%8c%d8%aa%db%8c%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>دی‌اچ‌تی‌ام‌ال</title>
		<link>http://www.aminamjadi.com/1390/02/21/%d8%af%db%8c%e2%80%8c%d8%a7%da%86%e2%80%8c%d8%aa%db%8c%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/</link>
		<comments>http://www.aminamjadi.com/1390/02/21/%d8%af%db%8c%e2%80%8c%d8%a7%da%86%e2%80%8c%d8%aa%db%8c%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/#comments</comments>
		<pubDate>Wed, 11 May 2011 16:31:12 +0000</pubDate>
		<dc:creator>امین</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[طراحی]]></category>
		<category><![CDATA[وب]]></category>
		<category><![CDATA[DHTML]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[دی‌اچ‌تی‌ام‌ال]]></category>

		<guid isPermaLink="false">http://www.aminamjadi.com/?p=158</guid>
		<description><![CDATA[دی‌اچ‌تی‌ام‌ال(به انگلیسی: DHTML) که مخفف HTML پویا است. نسخه بهبود یافته برنامه نویسی تحت وب HTML است در این حالت می‌توان امکاناتی به صفحات وب اضافه کرد که باعث شود کاربر با آن صفحه تعامل داشته باشد. در این زبان نشانه گذاری(Markup)، قابلیت‌های جدید تری نسبت به Html تعریف شده‌است که بر اساس آن می‌توان [...]]]></description>
			<content:encoded><![CDATA[<p>دی‌اچ‌تی‌ام‌ال(به انگلیسی: DHTML) که مخفف HTML پویا است. نسخه بهبود یافته برنامه نویسی تحت وب HTML است در این حالت می‌توان امکاناتی به صفحات وب اضافه کرد که باعث شود کاربر با آن صفحه تعامل داشته باشد.<br />
در این زبان نشانه گذاری(Markup)، قابلیت‌های جدید تری نسبت به Html تعریف شده‌است که بر اساس آن می‌توان کنترل بیشتری بر روی مولفه‌های موجود در یک صفحه وب اعمال کرد و بتوان به صفحه وب جلوه‌های ویژه (مبتنی بر شرایط مرورگر) بخشید. به عنوان مثال می‌توان بر روی حرکات ماوس در صفحه وب نظارت کرد و براساس موقعیت ماوس از روی یک بر چسب تصویر، یک انمیشن شروع به اجرا کند یا فونتها تغییر رنگ، اندازه، نوع و حتی تغیر زبان بدهد. بیشتر امکانات DHTML در راستای ایجاد جلوه‌های بصری، کنترل ماوس و تغییر پویای رنگها هستند. از صفحات DHTML که عموما با پسوند.Dhtml ذخیره می‌شوند، از زبانهای VBScript یا JavaScript استفاده می‌شوند. این اسکریپت‌ها در هنگام نمایش صفحه وب خط به خط توسط مرورگر اجرا می‌شوند.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aminamjadi.com/1390/02/21/%d8%af%db%8c%e2%80%8c%d8%a7%da%86%e2%80%8c%d8%aa%db%8c%e2%80%8c%d8%a7%d9%85%e2%80%8c%d8%a7%d9%84/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

