# فناوری جاوا > برنامه‌نویسی جاوا > Java EE : نگارش سازمانی جاوا >  تاپیک برای مبتدیان

## mohssen_mz

سلام
این تاپیک محلی برای طرح سوالات مبتدی در j2ee  است.
امیدوارم مفید واقع بشه .

----------


## یک برنامه نویس

من در سایت eatj ثبت نام کرده ام ولی وقتی خواستم طبق راهنمایی خودش عمل کنم و فایل ROOT.war را بسازم پیغام خطای زیر در command prompt آمد و فایل ROOT.war درست نشد:

 !c' flag requires manifest or input files to be specified'
 
 آیا می دانید علت چیست؟
 
 یک سوال دیگر هم دارم: آیا این فایل ROOT.war وقتی ساخته می شود به تنهایی می تواند روی این سایت کار کند و یا نیاز به فایلهای دیگری نیز دارد؟

----------


## handinux

دوست عزیز یک مثال از همان صفحه قابل دانلود بود همان را دانلود و آپلود کن و آزمایش کن.برای جزئیات فایلی که خودت درست کردی روبا winrar بازش کن و با اون مقایسه کن تا بفهمی اشتباهت کجا بوده.اینم آدرس مثال : http://www.eatj.com/ROOT.war

----------


## یک برنامه نویس

از این که توجه کردی واقعا ممنونم.

من همه ی کارهایی را که شما گفتی قبلا انجام داده ام ولی مشکل من این است که فایل ROOT.war با استفاده از همین مثال ایجاد نمی شود.
در این مثال گفته دستور زیر را در command prompt  و در مسیر برنامه اجرا کنید:
jar cvf ROOT.war
من هم دقیقا همین کار را کردم ولی پیغام خطایی که قبلا گفتم ظاهر شد.

من از مسیر زیر استفاده می کنم:
C:\Program Files\Java\jdk1.6.0\bin

به نظر شما آیا مشکل از نسخه ی فایل Jar.exe می باشد یا اینکه باید طرز کاربرد دستور را در command prompt عوض کنم؟

----------


## javaphantom

بابا وقتی می گم IDE کار نکنید برای همین چیزاست
برو یک فلدر درست کن به نام Root
بعد توی اون یک فلد درست کن به نام WEB-INF حتما حروف بزرگ باشه
توی این فلدر یعنی WEB-INF یه فایل باز می کنی به نام web.xml
انیایی که نوشتم copy paste کن توی این فایل 
 <?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>

  <welcome-file-list>
	  <welcome-file>index.html</welcome-file>
	  <welcome-file>index.htm</welcome-file>
	  <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
دقت کن که همه چیز درست باشه اینجا همه چیز و به هم می ریزه
تگها رو چک کن.
بعد save  کن بیا بیرون
برگرد توی مسیر اصلیت یعنی Root کنار فلد WEB-INF حالا برای شروع یک فایل index.jsp درست کن که عشق jsp هم داری مثلا چاپ کنه Hello
اونم save kon بعد بیا توی console برو توی مسیری که jar رو بشناسه یعنی وقتی نوشتی jar پیعام error syntax مثلا برات نیاید. بعد این دستور رو توی همون console بزن
jar -cvf ROOT.war *
-zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz  zzzz
این اول کاره 
بعدش برو upload کن
چاکس

----------


## handinux

دوست عزیز javaphantom واقعا از کمک های شما ممنون اما یک مبتدی چیزی از حرف های شما دستگیرش نمی شود.من با نحوه نوشتار پست های شما آشنا هستم و معتقدم یک مبتدی با خواندن آنها فقط دچار یک سری توهمات می شود.اشتباه نکنید! نمی خواهم خدای ناکرده نسبت به تخصص شما موضع گیری کنم چون در اینکه شما در سطح بالایی از اطلاعات هستید شکی نیست.حرفم این است که چگونه پاسخ یک مبتدی را بدهیم...باز هم متشکرم

و اما شرح ساده خطا : دوست عزیز محسن خان . اگر کمی به خطای داده شده توجه کنید به ایراد خود پی میبرید.در خطا توضیح داده شده که شما نام پوشه و یا فایلهایی که باید به فایل war تبدیل شود را وارد نکردید.همین! باید نام آنها را یکی یکی وارد کنید
خوب حالا بگویید می خواهید این کار را با همان مثال انجام بدهید یا خودتان یکی نوشته اید تا بهتر راهنمایی شوید.

----------


## javaphantom

شما مشکلتون اینه که j2se خوب متوجه نشدید بعد وارد دنیای وب شده اید بعد بجای اینکه اول conceptual مفهومی کار کنی یک محیط IDE باز کردی چندتا تگ انداختی بعد F چندو زدی اونم همه کارها رو برات اون پشت هندل کرده حالا اومدی اینجا گیر کرد.
مثالی که من برات زدم بقدری آسونه که خودتم نمی تونی باور کنی یک فایل xml به همراه یک فایل html یا jsp که داخل همشونم برات نوشتم چی کار کنی اگر اینجوری دچار توهمات می شی که دیگه نمی دونم چی بگم :دی
درست کردن یک جر فایل که حتی کدشم برات نوشتم. وا قعا از بقیه دوستان می خوام که کاری که من گفتم رو انجام بدن ببینم که کجای کار سخت هست برای خودمم ایجاد سوال شد. 
چاکس

----------


## javaphantom

> در خطا توضیح داده شده که شما نام پوشه و یا فایلهایی که باید به فایل war تبدیل شود را وارد نکردید.همین! باید نام آنها را یکی یکی وارد کنید.


می گم استفاده از * هم بد چیزی نیست البته اگر دچار توهم و سردرگمی نمی شوید و دوست دارید تک تک نامه همرو وارد کنید
چاکس

----------


## handinux

دوست من محسن خان
دقت نکردید.در همان صفحه آموزشی که فرمودید طبق آن عمل کردید عبارت 
. jar cvf ROOT.war
 نوشته شده که شما آن نقطه بعد از war را وارد نکرده اید.معنای این نقطه انتخاب تمامی فایل ها یا پوشه ها برای وارد شدن به فایل war است که معنی * که javaphantom عزیز گفتند را می دهد البته با یک فاصله
راستی این . من را یاد DOS 6 انداخت.زمانی win نبود می رفتیم یک دستور . del میزدیم و..... :D

----------


## handinux

راستی در صورتی که از servlet ها استفاده نمی کنید لزومی برای استفاده از web.xml هم وجود ندارد

----------


## javaphantom

> راستی در صورتی که از servlet ها استفاده نمی کنید لزومی برای استفاده از web.xml هم وجود ندارد


درصورتی که بخواهیم از فایل با نام مخصوص بجز index استفاده کنیم وجود xml و تک مربوطه به آن الزامی می باشد

----------


## handinux

بله درست می فرمایید بجز index
البته فکر نمی کنم کسی چنین کاری کند یا حداقل معمول نیست.ممنون

----------


## javaphantom

چرا واقعا بعضی وقتها تو بعضی از پروژه ها  لازمه که بخوای با index کار نکنی و مثلا سرویس دهنده وب JBoss وقتی می خوای برای تام کتش یک war فایل Deploy کنی بعضی وقتها دنبال web.xml می گرده البته من واقعا الان روی این JBoss که الان داریم کار می کنیم امتحان نکردم که exception می گیره یا نه

----------


## یک برنامه نویس

handinux عزیز دستت درد نکنه زدی تو خال.
شما درست می گی من همان نقطه را جا انداختم.
فکر نمی کردم این جزء دستور باشه.
از دقت و حوصله ای که داری واقعا تشکر می کنم.
اگر وقت داشتی لینک زیر را ببین چون این نشون می ده که به صحبتهای شما و دوست عزیز javaphantom کاملا توجه کرده ام و اشتباه نکرده ام:
http://mohmoh.s42.eatj.com/Example1/

----------


## یک برنامه نویس

javaphantom دوست عزیز از راهنمایی کاملت ممنونم.
شما کل کار را از ریشه توضیح دادید و این همون چیزیه که یک مبتدی به دنبال آن می گرده ولی اکثر اوقات روش نمی شه بپرسه.
عنوان این تاپیک *تاپیک برای مبتدیان* است و همین باعث شد من در این قسمت اینقدر راحت سوالم رو مطرح کنم.
ولی مطمئن باش اگر جای دیگری از این تالار می دیدم که *     تاپیک برای فوق مبتدیان* وجود داره اونجا می رفتم چون واقعا هیچی از وب نمی دونم.
من فقط visual basic کار کرده ام آن هم در سطح مقدماتی. عشق جاوا و هیچ زبان دیگه ای رو ندارم و تعصبی روی هیچ زبانی ندارم.
من دنبال یک هدف خاص در وب هستم و با تحقیقات دو هفته ای که کردم متوجه شدم باید بروم سراغ j2ee.
البته در این مورد بعدا بیشتر توضیح می دم.

راهنمایی شما را مو به مو انجام دادم و نتیجه گرفتم.
نتیجه اش هم صفحه ی زیر است (البته امیدوارم هاست من در این لحظه که آن را می بینی فعال باشه)
http://mohmoh.s42.eatj.com/Example1/
باز هم ممنونم.

----------


## یک برنامه نویس

یک سوال فوق مبتدی دیگه ( لطفا هر کی حوصلشو داره جواب بده ):

اگر ما بخواهیم یک برنامه بنویسیم که کدهای نوشته شده ی ما حتی داخل سرور هم معلوم نباشه و کسی نتونه به سورس کدهای ما دست پیدا کنه (حتی خود سرور) آیا این کار ممکنه؟
یعنی داخل فایلهای آپ لود شده ی ما هم اثری از کدهای ما نباشه و فایلی به زبان ماشین (یا چیزی شبیه به آن تولید کنیم).
طبق تحقیقات من این کار فقط با j2ee ممکن است. آیا من به نتیجه ی درستی رسیده ام؟

اگر جواب مثبت است لطفا همانند دوست عزیز javaphantom یک مثال کاملا ساده ولی از صفر صفر توضیح دهید تا یک فوق مبتدی هم بتونه اون را انجام بده.

البته کمی با حوصله تر که ما خجالت نکشیم.  :چشمک:

----------


## یک برنامه نویس

اگه کسی هست که نتونسته مثال آقای javaphantom را انجام بده خجالت نکشه.
از عضو شدن در سایت eatj.com گرفته تا ساختن فایل hello یی که جناب javaphantom فرمودند.
اگه اساتید فرصت نکردند جواب بدهند و من چیزی می دونستم خوشحال می شم کمک کنم.

----------


## javaphantom

من همانطور که در چندین تاپیک دیگر اشاره کردم گفتم که jsp همان servlet است یعنی هنگامی که ما یک jsp فایل رو صدا می کنیم در قسمت server این jsp قایل تبدیل به یک servlet می شه و برای ما اجرا می شه. پس تفاوت آنها چیست؟ تفاوت آنها در این است که در servlet ما کاملا code جاوا استفاده می کنیم و برای ایجاد تگهای html باید یک سختی خاصی را تحمل کنیم که گاه باعث ایجاد اشتباه در کار می شود ولی jsp زبان تگ نویسی است و از همه مهمتر این است که به راحتی به تگهای html دسترسی داریم. به تگهای خود jsp دسترسی داریم و همچنین می توانیم کتابخانه ای از تگهای ایجاد شده خودمان درست کنیم و از آن استفاده کنیم. سوال پیش می آید کی و کجا از آنها استفاده کنیم؟ در جواب می توان به معقوله ای به نام pattern ها اشاره کرد که من بسیار روی این موضوع تاکید می کنم که برنامه نویسی که pattern بلد نباشده برنامه نویس نیست و در آینده معمار یا developer خوبی نخواهد بود. بحث J2SE , J2EE patterns رو حتما در موردش مطالعه کیند.
اما خوب شما این حساب رو بکنید که وقتی می خواهید یک عمل منطقی رو انجام بدید مثلا می خواهید در طرف سرور مطمعن شوید username و password یک user درست وارد شده است در این قسمت شما واقعا نیاز به ایجاد یک jsp فایل ندارید چون قرار نیست به client چیزی نشان بدهید چون client با زدن یک دکمه اطلاعات رو برای سرور فرستاده که حالا نوبت سرور هست که یک سری عملیات روی آن انجام بده اینجاست که وجود servlet مشخص می شه.
من یک مثال ساده برای یک servlet می زنم که همان مثال معروف Hello World است. بازهم تاکید می کنم برای انجام این مثال از هیچ IDE استفاده نکنید تا مفهوم کار برایتان روشن شود.
قدم اول شناساندن servlet به container است. من قبلا به فلدر WEB-INF اشاره کرده ام حال در داخل همان فلدر WEB-INF یک فلدر دیگر به نام classes ایجاد کنید همه حرف کوچک این فلدر همان فلدری خواهد بود که باید servlet های ما در آن قرار گیرند. من به فایل web-xml هم قبلا اشاره کرده ام که این فایل در داخل فلدر WEB-INF قرار دارد و همچنین کنار فلدر classes در این فایل باید مشخصات servlet را نوشته تا container بتواند servlet ها را بشناسد.
من فرض می کنم که می خوام یک servlet به نام MyServlet درست کنم
پس فایل web.xml را edit  کرده و در زیرشاخه تگ <web-app> تگ servlet رو اضافه کنید.
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>MyServlet.class</servlet-class>
</servlet>
حال در ادامه باید servlet را به container در یک آدرس مجازی برای نشان دادن نتیجه map کنیم. پس در ادامه چنین رفتار می کنیم
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
به تعداد servlet های ما که اضافه می شود باید از این تگها همگی تگرار شوند  و فقط نام servlet باید تغییر کند.
معرفی تمام شد.حال نوبت خود servlet است. برای نوشتن یک servlet باید jarفایل کتابخانه ای ان به CLASSPATH اضافه شود در برنامه tomcat در قسمت lib  باید jar فایل servlet-api.jar را پیدا کنید و به CLASSPATH اضافه کنید مسیر آن را.
 با NOTEPAD یک فایل در مسیرWEB-INF/classes/MyServlet.java/ درست کرده و چنین بنویسید.
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;


public class MyServlet extends HttpServlet {

	public void service(HttpServletRequest request,HttpServletResponse response)
	    throws IOException,ServletException {		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();		
		out.println("<html>");
		out.println("<body>");
		out.println("<h1 align=\"center\"> Hello World </h1>");
		out.println("</body>");
		out.println("</html>");
	}
}
 حال کافیست که فایل را کامپایل کرده با دستور javac MyServlet.java
در یک console باید این کار را انجام دهید.
توضیح برنامه:
همانطور که مشاهده می کنید هر کلاسی که HttpServlet ارث بگیرید خود تبدیل به یک servlet می شود. در داخل این کلاس چند متدود می باشد که ما باید آنها را override یا دوباره نویسی کنیم. متدود های doPost و doGet و یا service که من آنرا الان override کرده ام باید بنا به احتیاج override شوند.
تذکر مفصل در مورد این متدوها بخوانید.
همانطور که می بینید برای اینکه بخواهم یک hello world ساده بنویسم از چند دستور out.println استفاده کرده ام و این همان جای سخت کار است که jsp راحت کرده کار رو.
کار تمام شد برای صدا کردن این servlet با فرض اینکه serve کامپیوتر خود شماست و پورت شما 80  ست شده است 
اینگونه صدا می شود.
Http://localhost/servlet/MyServlet
دوستان نوشته های من هیچ گونه ارزش برای تعلیم و یاد گیری ندارد بلکه فقط یک مثال ساده کاربردی و چشم پوشی از کلی جزییات می باشد.
خودتان نتیجه را با یک jsp فایل مقایسه کنید.
هرکدام ارزش کار خودشون رو دارند.
چاکس

----------


## یک برنامه نویس

دوست عزیز من واقعا مبتدی هستم ولی بسیار علاقمند به یادگیری.
وقتی دستور زیر را اجرا کردم
javac MyServlet.java
پیغام خطای زیر ظاهر شد:


من برنامه ی tomcat را نصب نکرده ام آیا علت این است؟
البته الان در حال دانلود آن هستم.
آیا با استفاده از jbuilder هم می توان این کار را کرد؟

----------


## یک برنامه نویس

javaphantom  عزیز از توضیح مفصلت ممنون
لطفا در مورد سوال قبلی با عنوان
*یک سوال فوق مبتدی
*زیر دیپلم توضیح کوچیکی بده.
خیلی سطح پایین. :گریه: 
آیا این کار ممکنه یا نه؟ :خیلی عصبانی: 
آیا برای رسیدن به این هدف (یعنی مخفی کردن سورس برنامه از سرور) دات نت هم می تونه کار گشا باشه یا فقط باید به j2ee متوسل شد؟

----------


## javaphantom

دوستان عزیز من که به شما گفتم باید به CLASSPATH خودتان JAR فایل رو اضافه کنید این دقیقا متن من هست 
برای نوشتن یک servlet باید jarفایل کتابخانه ای ان به CLASSPATH اضافه شود در برنامه tomcat در قسمت lib باید jar فایل servlet-api.jar را پیدا کنید و به CLASSPATH اضافه کنید مسیر آن را.

برای اجرای servlet یا jsp ما نیاز به یک container  داریم که من tomcat رو بشما معرفی کردم هنگامی که این نرم افزار رو نصب می کنید در داخل مسیری که این نرم افزار نصب شده است از طریق search به دنبال چنین فایلی بگردید servlet-api.jar مسیر این فایل رو یاداشت کنید. حال در انتهای مسیر CLASSPATH مسیر یاداشت شده را به اضافه نام فایل که همان Servlet-api.jar را قرار داده. در صورتی که بخواهید بصورت موقت این کار را انجام دهید کافیست یک console باز کرده 
در windows چنین عمل کنید
set CLASSPATH=%CLASSPATH%;c:\tomcat\lib\servlet-api.jar
همانطور که می بینید فایل servlet-api.jar برای مثال در مسیر c:\tomcat\lib می باشد.
در linux چنین عمل کنید یک console باز کرده
export $CLASSPATH;/usr/share/tomcat/lib/servlet-api.jar
مسیر های نوشته شده در دو حالت برای مثال می باشد ممکن است در کامپیوتر شما در مسیر دیگری باشد خودتان از طریق عمل search به دنبال مسیر درست باشید.
کسانیکه با محیط IDE کار می کنند  بایه به کتابخانه jar فایلهایشان مسیر servlet-api.jar نیز اضافه کنند.
بازم می گم بابا این IDE مثل سم می مونه مخصوصا برای کسانیکه در حال آموزش هستند. محیط IDE برای سریع تر کردن کار Developer و کار تیمی می باشد و کسی که با concept کار کاملا آشنا باشه.

----------


## javaphantom

> دوست عزیز من واقعا مبتدی هستم ولی بسیار علاقمند به یادگیری.
> وقتی دستور زیر را اجرا کردم
> javac MyServlet.java
> من برنامه ی tomcat را نصب نکرده ام آیا علت این است؟
> البته الان در حال دانلود آن هستم.
> آیا با استفاده از jbuilder هم می توان این کار را کرد؟


100%  شما نیاز به یک container دارید که بتوانید برنامه های تحت server رو اجرا کنید.
tomcat وظیفه اصلیش مدیریت اجرا و  چیدمان servlet ها و jsp های شما رو در قسمت server side و باسخگوی قسمت client side می باشد.
نمی دونم که آیا باید بیشتر توضییح دهم یا خود دوستان در مورد servlet container که یکی از دوستان یک تابیک با همین موضوع در همین تالار بیان کرده اند  مطالعه خواهند کرد.
tomcat رو برای jbuilder تعریف کنید یعنی مسیر دهی کنید تا براییتان اجرایش کند.
چاکس

----------


## یک برنامه نویس

دستت درد نکنه. مشکلم حل شد.  :بوس:  :بوس:  :بوس: 
نفست گرم. (همون دمت گرم محترمانه)

مشکل اینجا بود که من متوجه نمی شدم 
*به classpath اضافه کنید مسیر آن را
*یعنی چه. من می رفتم به my computer و path  اضافه می کردم.
باور کن با یک آدم کاملا مبتدی طرف هستی من هنوز تازه امروز فهمیدم که ide که شما می گفتی یعنی چه. البته اگر درست متوجه شده باشم منظورت محیط های کمکی برنامه نویسی جاوا مثل JBuilder است.
اما من تاحالا با هیچ کدام از این نرم افزار ها کار نکرده ام و فقط از command prompt و notepad  کمک گرفته ام.

----------


## یک برنامه نویس

ای کاش یک مبتدی دیگر هم در این تاپیک وارد می شد تا من راحت تر می تونستم سوال بپرسم. و حداقل بعضی از سوالات را اون می پرسید. :خجالت:  :خجالت:  :خجالت:

----------


## javaphantom

> آیا برای رسیدن به این هدف (یعنی مخفی کردن سورس برنامه از سرور) دات نت هم می تونه کار گشا باشه یا فقط باید به j2ee متوسل شد؟


تمام قدرت .NET در قسمت web بر می گرده به framework .net که بسیار ضیعیف هست.
من قصد مقایه .net رو با J2EE ندارم چون واقعا اصلا قابل مقایسه نیستند.
بیشتر قدرت J2EE معماری این platform هست. دسترسی به سطوح مختلف برای تغییر دادن و یا گسترش یک سطوح به دلخواه با وجود ابزارها و تکنولوژی گوناگونی که این محصول را پشتیبانی می کند و همچنین استاندارد بودن و متن باز بودن این زبان و این تکنولوژی است که باعث شده بسیار پیشرفت کند. همانطور که گفته ام بیش از ۳۰۰ شرکت IT بزرگ دنیا برای محصولات جاوا سرما گزاری و پشتیانی می کنند. apache یکی از همان شرکتهایی است که مخصول آن بصورت متن باز وجود دارد.
در قسمت j2ee بخش کامپوننت ها  و انواع session ها و beans ها و قابلیتهای آنهاست که تمام محصولات دیگر شرکتهای دنیا نه حتی microsoft قابل مقایسه با j2ee نیستند.
اما من همیشه می گم معمار خوب کسی که به تمامی این محصولات اشراف کافی داشته باشه  و بدونه که استفاده از کدام تکنولوژی برای چه پروژه ای مناسب هست.

----------


## mohssen_mz

سلام
منم یه مبتدی هستم . خواهشا" یکی اینا رو برای من توضیح بده (البته اگر بصورت pdf  بونه دربیاره که واقعا" عالی میشه)
1-tomcat
2-servlet
3-jsp
4-jsf
5-glassfish
6-strust
7-spring
8-ejb
اگه به صورت خلاصه و کوتاه باشه که حداقل اطلاعات که اصلا" چی هستن  چیکار میکنن وظائفشون چیه کافی است

----------


## یک برنامه نویس

سلام mohsen_mz
بابا تو تا حالا کجا بودی؟
تاپیک را زدی و فرار کردی؟ 
من را با چند تا حرفه ای تمام عیار تنها گذاشتی؟
ببین من مشکل دارم یا این javaphantom خیلی بالای دیپلم صحبت می کنه؟
من دوبار در مورد پنهان کردن سورس از سرور پرسیدم ولی هنوز متوجه نشده ام که این کار عملی است یا نه؟
servlet هم ساخته ام ولی نمی دونم سورس داخل آن *در فایلهایی که باید برای سرور آپلود کنم*، *برای سرور* قابل دسترسی است یا کاملا به زبان ماشین است.

----------


## javaphantom

> سلام
> منم یه مبتدی هستم . خواهشا" یکی اینا رو برای من توضیح بده (البته اگر بصورت pdf  بونه دربیاره که واقعا" عالی میشه)
> 1-tomcat
> 2-servlet
> 3-jsp
> 4-jsf
> 5-glassfish
> 6-strust
> 7-spring
> ...


tomcat یک servlet , jsp container است یعنی یک ظرفی هست که ما توی اون servlet یا  jsp که درست کردیم می اندازیم و وظیفه اون اجرای این servlet و jsp هایی هست که ما درست کردیم

servlet قدیم که می خواستم page های پویا بنویسن یعنی page ی که در اون عملایات منطقی صورت می گیرد در قسمت server مثل هر pageی که توی اون usrname و password هست شما که اونو پر می کنید می ره سمت سرور و یک سری عملیات روی اون انجام می شه که ببینه شما کاربر درست هستید یا نه این page ها رو بهشون پویا می گن با زبان c می نوشتن. کار مشکل بود java اومد بجای اینکه با c بنویسن با زبان javaپیاده سازیش کرد که با زبان java بنویسن که الان بهش می گن servlet

jsp همان servlet با این تفاوت که بجای انیکه با syntax جاوا کار کنی با کمک tag کار می کنی + همه امکانات نوشتن زبان جاوا رو هم داری + تگهای html و تگهای استاندارد خود java + تگهایی که خودت می تونی درست کنی

jsf یک framework استاندارد محصول خود سان است که jsp می باشه که بر پایه و اساس ajax هست یعنی تلفیقی از jsp و javascriptو html به اضافه قابلیت دسترسی به دیگر تکنولوژیهای جاوا

struts  یک framework متن باز برای ایجاد نرم افزارهای سازمانی بر اساس معماری MVC که کار این framework اینه که ejb سخته درست کردنش برای انیکه سرعت کار رو بالا به برن بعضی از شرکتا اومدن framework درست کردن که تو راحتر بتونی محصولتو تولید کنی

spring هم مانند struts یک framework برای تولید محصولات enterprise یا همان ejb

ejb یک component هست یا همان مولقه یعنی مجموعه ای از چند کلاس جاوایی که باهم یک جا جم شده اند و دسته جمعی یک کاری رو انجام می دن همانطور که گفتم چون این کار از ظرافت خاص خودش بر خوردار برای انجام دادنش از framework استفاده می کنند.

glassfish یک سرویس دهنده وب هست. کلا سرویس دهندهای وب برنامه هایی هستند که بر روی سرور سوار شده و کنترل کننده تقاضاهای مشتریان می باشند. چه سخت افزاری و چه نرم افزاری

ببین دوست عزیز تمام این چیزهایی که شما خواسته اید یک دنیا مطلب توش هست که من واقعا نمی دونم از کجاش بگم. pdf خواستید کافی هست در google یک search بکنید

----------


## javaphantom

> سلام mohsen_mz
> بابا تو تا حالا کجا بودی؟
> تاپیک را زدی و فرار کردی؟ 
> من را با چند تا حرفه ای تمام عیار تنها گذاشتی؟
> ببین من مشکل دارم یا این javaphantom خیلی بالای دیپلم صحبت می کنه؟
> من دوبار در مورد پنهان کردن سورس از سرور پرسیدم ولی هنوز متوجه نشده ام که این کار عملی است یا نه؟
> servlet هم ساخته ام ولی نمی دونم سورس داخل آن *در فایلهایی که باید برای سرور آپلود کنم*، *برای سرور* قابل دسترسی است یا کاملا به زبان ماشین است.


عزیز من شما وقتی servlet می نویسید آنرا کامپایل می کنید یعنی به زبان ماشین تبدیل می کنید و بعد آن را برای server می فرستید. سرور  شما که برروی آن tomcat نصب شده از فایل کامپایل شده شما instance در حافظه خود می گیرد و به من مشتری نتیجه را تحویل می دهد.

----------


## یک برنامه نویس

دوست عزیز javaphantom سلام
من منظور شما را متوجه شدم ولی وقتی فایل class ایجاد شده را با notepad بازکردم دیدم اثراتی از سورس  فایل jar در آن وجود دارد. می خواستم بدانم آیا این فایلی که به زبان ماشین تولید شده را می توان با روش خاصی بکار گرفت و از داخل آن سورس برنامه ی jar آن را پیدا کرد؟

----------


## javaphantom

> دیدم اثراتی از سورس  فایل jar در آن وجود دارد. می خواستم بدانم آیا این فایلی که به زبان ماشین تولید شده را می توان با روش خاصی بکار گرفت و از داخل آن سورس برنامه ی jar آن را پیدا کرد؟


من منظور شما رو نفهمیدم

ببین دوست عزیز در جاوا وقتی شما برنامه ای می نویسید با پسوند جاوا آن را ذخیره می کنید وقتی آنرا کامپایل کردید بصورت یک فایل با پسوند class می شود که به زبان ماشین شده
jar مانند rar عمل می کند یعنی compress می کند. مجموعه ای از class فایلها را می توان در یک jar فایل قرار داد.

دیدم اثراتی از سورص فایل jar در آن وجود دارد یعنی چی؟

اگر منطورتون اینکه با برنامه rar یا winzip با gunzip داخل jar فایل رو دیدید که فایل class شما در آن هست خوب این کاملا طبیعی هست.
من نمی دونم که چرا انقدر نگران ان هستید که کسی source برنامه شما رو ببینه.
تازم ببینه می خواد چیکار کنه.؟ مهم server شما ست که سعی کنید از جایی مطمعن سرویس بگیرید.

----------


## یک برنامه نویس

ببخشید اشتباه لوپی بود ولی خیلی فجیع.
منظورم فایل جاوای آن بود با پسوند java.
آیا این فایل باپسوند class که از فایل با پسوند java تولید شده و در اختیار سرور قرار گرفته می تواند (توسط افرادی که پشتیبانی کننده ی سرور هستند) مورد استفاده قرار گیرد تا دوباره فایل متنی حاوی سورس با پسوند java را از آن تولید کرد؟
کاربرد:
مثلا فرض کنید کسی به یک سرور پول کلانی می دهد تا فایلهای شما را در اختیارش قرار دهد. سپس با استفاده از فایلهای (به زبان ماشین شده ی شما) به سورس شما دست پیدا کرده و با نوشتن برنامه ای که بتواند دیتابیس شما را تغییر دهد، در زمان اجرای سایت شما سوء استفاده های مالی یا غیره می نماید. :متعجب: 
ببخشید که فیلمش خیلی تخیلی شد ولی خوب احتماله دیگه.
خوب تو ایران زندگی کردن چنین طرز فکری به آدم می ده همیشه مواظب ... باشیم. :افسرده:

----------


## javaphantom

سرور dedicated  بگیر براش رمز بزار خودت tune کن برای database رمز بزار برای table هات رمز بزار . آره الافایی هستند که دنبال تخریب کردن و خیلی کارهای دیگه هستند. برنامه هایی هستند که فایل کامپایل شده را به حالت اول یا همان قبل از کامپایل تعویض می کنند.
راه حل:
یک بار سوال همین فرم بود که چی کار کنیم که کسی نتونه با این برنامه ها ی تبدیل کننده سورس برنامه ما رو کامپایل شده بدست بیاره.
JDK متن باز یعنی شما می تونید به متن این jdk دسترسی داشته باشی. این بزرگترین مزیت کار جاواست. jdk رو بصورت متن باز پیدا می کنی داخلش می ری و کاری می کنی که استاندارد کامپایل کردن java فایل ها در اختیار تو باشه. اون موقع چون تو الگوریتم کامپایل کردن رو به دلخواه خودت تغییر دادی این برنامه های تبدیل کننده دیگه نمی تونند کد برنامه تورو به سورس اولش برگردونند. این کار خیلی سخته و بسیار حرفه ای ولی شدنی کسانیکه برنامه تبدیل کنند می نویسن به این جور روشها کار می کنند.
اما تازه گفتم شما الان وارد سرور من شدید اگر بخواهین تخریب کنید که دیگه لازم نیست به کد دسترسی داشته باشید می تونید همه چیزو پاک کنید. حالا تازه هم خواستید مثلا کد فلان برنامه منو تونستید بدست بیارید. غیر از این هست که باز باید کد بدست اومده کامپایل بشه تا بشه اجراش کرد. می خواهید برای خودتون استفاده کنید و نام خودتون بزنید. اشکالی نداره این کار رو بکنید. اصلا دینای open source برای همینه من که قبلا کد رو زدم و بقیه دارن استفاده می کنند چیزی از دست نمی دم. شمام استفاده کن. مهم وارد شدن به سرو هست که دیگه کار تمومه اصلا شما وقتی وارد شدید بجای اینکه از کار من سر در بیارید می تونید کار خودتون جایگزین کار من کنید. اون که بدتره. داستانی که شما تعریف کردید که طرف بیاد اطلاعات منو بفروشه و از این جور حرفها که خوب شما دارید charge می شید که طرف همه جور امنیت بهتون بده حالا نا مردی می کنه که می تونید برید ازش شکایت کنید :دی 
نظر من اینکه بجایی که به این چیزا فکر کنید به اصل قضیه نگاه کنید
چاکس

----------


## یک برنامه نویس

دوست عزیز javaphantom باز هم ممنون از اینکه اینقدر با حوصله جواب دادی.
نمی خوام پرچونگی کنم ولی برای روشن شدن اهمیت این موضوع یک مثال می زنم:
فرض کنید شما یک برنامه ای که حاوی گردشهای مالی می شود برای یک شرکت نوشته اید. بعد از مدتی کاربرهای شما به حدی زیاد می شوند که شما قادر به بررسی گردشهای مالی تک تک افراد بصورت دستی نیستید و مجبورید فقط به نتایج حاصل از برنامه اکتفا کنید. حال شخصی که سورس شما را از طریق سرور بدست آورده ( که شامل همه ی رمزهای عبور ثابت می باشد ) برنامه ای می نویسد که یک کاربر جدید با امکانات نامحدود داخل لیست کاربران شما ایجاد کند. یعنی در آن برنامه می گوید کاربر با نام فلان و با رمز فلان اگر وارد شد همه ی امکانات را در اختیارش بگذار. سپس با استفاده از این کاربر به سایت شما وارد می شود و بدون نیاز به از بین بردن اطلاعات شما و به صورت کاملا نامحسوس، عملیات مالی خاصی به نفع خود انجام می دهد به گونه ای که شما در این مجموعه ی بزرگ تغییر محسوسی متوجه نشوید. در نتیجه شما اصلا متوجه ایراد نمی شوید که بخواهید از سرور خود شکایت کنید یا آن را عوض کنید.
مهمترین دلیلی که باعث شده من به سراغ جاوا بیایم همین است که بتوانم سورس خود را از خطر مورد سو ء استفاده قرار گرفتن توسط سرور مخفی کنم. به نظر من این آخر امنیت است. 

ضمنا من NetBeans را نصب کرده و با استفاده از آن توانستم servlet نوشته و اجرا کنم.
می بینی که شاگرد خیلی خنگی نیستم. :لبخند: 
اما برای اینکه به توصیه ی شما عمل کنم و مفهومی کار کنم آیا کتاب فارسی هم در زمینه ی j2ee برای رسیدن به هدفی که عرض کردم سراغ دارید؟

----------


## javaphantom

ببین عزیز من راههای امنیتی بسیاری وجود داره که شما بتونید از server محافظت کنید که ممکنه هم سخت افزاری باشه هم نرم افزاری. اینکه یک بابایی بیاد و به این راحتی توی سرور شما و یک منطق پیاده سازی کنه که کارهایی که گفتی انجام بده باید خیلی اینکاره باشه و از طرفی تنظیمات سرور شما هم کشککی باشه. من تا حال هم چین چیزی ندیدم. تازه اگرهم بتونه این کارو بکونه چون از الگوریتم خاص خودش استفاده می کنه نیاز به دیدن سورس شما نداره همانطور که گفتم منطق خودشو اعمال می کنه.
توی جاوا و کلا برنامه نویسی وب در جاوا چون بصورت چند لایه ای صورت می گیره در نتیجه شما می تونید همه جوره برنامه قسمت سروری خودتون رو با لایه بندی فیزیکی یا منطقی امنیت لازم رو بهشون بدی. روش و pattern هایی وجود داره برای امنیت کار که باید مطالعه کنید. من نمی تونم با این شناختی که از شما دارم به سوالتون بصورت کامل جواب بدم. فقط این نوید رو می تونم به شما بدم از جاوا امنتر هیچ کجا فعلا پیدا نخواهید کرد.
netbeans رو بریز دور
باید یاد بگیری تنظیمات tomcat رو خودت انجام بدی یکی از جاهایی که می تونه از برنامه شما محافظت کنه همین tomcat هست. سعی کنید با documentهای جاوا کار کنید.شما اگر درجایی درست و حسابی بخواهید کار کنید باید بتونید از کاراتون document تهیه کنید.
ببیند که جاوا چگونه عمل می کنه copy  کنید. محیط IDE فقط شما رو تنبل می کنه.
یک dot زدن و لیست یک سری method یا کلاس دیدن دردی از شما دوا نمی کنه. من مشکلات اکثر بچه ها رو توی این فروم می بینم اکثر مشکلات مفهومی هست بعد معماری کار و ندونستن pattern ها . من تا حالا ندیدم کسی بیاد اینجا و از pattern سوال کنه.
معماری J2ee که بسیار پیچیده هست رو هم دسته کم می گیرن. نوشتن یک برنامه تحت وب که یکسری فایل از database بخونه و یا بریزه که با php خیلی سریع تر و ارزان تر می شه انجام داد اما جاوا چیزی که یک سر و گردن بالای همه اینها هست معماری کاره.
کتاب فارسی خواستی توصیه من به شما اینکه فکرشم نکنی.
مفهومی سوال کن بهت link می دم یا دوستان هستن بهت link میدن یا همین طوری می ریم جلو و خودتو باید آماده کنی برای خوندن و خوندن
چاکس

----------


## یک برنامه نویس

من از خدامه که اینطوری کار کنم. هرچند برام خیلی سخته و رک بگم تا حالا چندین بار کاملا نا امید شده ام. بعضی از متنهایی را که شما می نویسی چندین بار می خونم و سعی می کنم خط به خط اونا رو اجرا کنم. بعضی وقتها شده که یک روز تمام درگیر هستم تا بتونم یک دستور العمل شما را اجرا کنم ولی چون اطلاعاتم کم است، حالتهای مختلف را با سعی و خطا امتحان می کنم.

اگه همین روش را ادامه بدم از این می ترسم که شما خسته بشی و سوالهای سطح پایین من باعث بشه دیگه جوابمو ندی.

حالا اگه باز هم فکر می کنی این روش درست است لطف کن بگو وگرنه روش دیگری پیشنهاد کن.

----------


## javaphantom

شما اول بخون اگر متوجه نشدی ببرس نه اینکه همه چیز رو بخوای اینجا یاد بگیری 
مفهوم بخون از html شروع کن تا به java
بدشم پیش نیاز j2ee می دونیکه j2se

----------


## یک برنامه نویس

از راهنمایی هات ممنون. همین کار رو می کنم.
ضمنا دوست ندارم فقط گیرنده باشم. من در زمینه ی فونت تحقیقات کوچیکی کرده ام. اگر مشکلی داشتی و از دست من کمکی بر اومد خوشحال می شم در خدمتت باشم. البته اگه بتونم پاسخ بدم.
ضمنا یک برنامه ی دفترچه تلفن ساده با *vb6* دارم اگر خواستی برات بفرستم. یک برنامه هم چون خیلی نیازم می شد نوشتم. کارش اینه که فایلهای با پسوند مشخص شده توسط کاربر را از داخل یک پوشه و زیر پوشه هاشون می کشه بیرون و توی یک پوشه که خودش می سازه می ریزه.
شاید وقتی که می خواهی فایلهای تصویری و یا فایلهای خاصی را از پوشه های save شده ی وب بیرون بکشی به دردت بخوره. هر کدام رو که خواستی بگو برات بفرستم. البته می دونم خودت این کاره ای ولی خوب دیگه گفتم. :بوس:

----------


## pro_mvb

سلام دوستان.منم یه مبتدیه دیگه هستم وقتی این تاپیکو دیدم خیلی خوشحال شدم! :قلب: 

من می خواهم یک سایت خرید آنلاین بنویسم با دیتابیس oracle و با استفاده از  j2ee که صفحات jsp  هست و با hiberante کار کنه.همینطور از  معماری mvc و JWMS پیروی کنه.

میخواستم نحوه کار کرده یه سایت خرید آنلاین رو بگین.
(اگه سوالم چرت بود ببخشید دیگه :لبخند گشاده!: )

----------


## mal_mot

سلام 
برای یاد گرفتن java از کجا شروع کنم؟

----------

