Jakarta Server Pages
جکارتہ سرور پیجز (جے ایس پی ؛ سابقہ جاوا سرور پیجز) ٹیکنالوجیز کا ایک مجموعہ ہے جو سافٹ ویئر ڈویلپرز کو ایچ ٹی ایم ایل، ایکس ایم ایل، ایس او اے پی، یا دستاویز کی دیگر اقسام پر مبنی متحرک طور پر تیار کردہ ویب پیجز بنانے میں مدد کرتا ہے۔ سن مائیکرو سسٹمز کے ذریعہ 1999 میں جاری کیا گیا، جے ایس پی پی ایچ پی اور اے ایس پی سے ملتا جلتا ہے، لیکن جاوا پروگرامنگ زبان استعمال کرتا ہے۔ جکارتہ سرور پیجز کو تعینات کرنے اور چلانے کے لیے، سرولیٹ کنٹینر کے ساتھ ہم آہنگ ویب سرور، جیسے اپاچی ٹام کیٹ یا جیٹی کی ضرورت ہوتی ہے۔ آرکیٹیکچرل طور پر جے ایس پی کو جاوا سرولیٹس کے اعلی سطحی خلاصہ کے طور پر دیکھا جا سکتا ہے۔ جے ایس پیز کا ترجمہ رن ٹائم پر سرولیٹس میں کیا جاتا ہے، اس لیے جے ایس پی ایک سرولیٹ ہے ؛ ہر جے ایس پی سرولیٹ کو کیش کیا جاتا ہے اور اس وقت تک دوبارہ استعمال کیا جاتا ہے جب تک کہ اصل جے ایس پی میں ترمیم نہ ہو جائے۔ جکارتہ سرور پیجز کو آزادانہ طور پر یا سرور سائیڈ ماڈل ویو کنٹرولر ڈیزائن کے ویو جزو کے طور پر استعمال کیا جا سکتا ہے، عام طور پر جاوا بینز ماڈل کے طور پر اور جاوا سرولیٹس (یا اپاچی اسٹرٹس جیسے فریم ورک) کنٹرولر کے طور پر۔ یہ ماڈل 2 فن تعمیر کی ایک قسم ہے۔ جے ایس پی جاوا کوڈ اور کچھ پہلے سے طے شدہ اعمال کو جامد ویب مارک اپ مواد، جیسے ایچ ٹی ایم ایل کے ساتھ مربوط کرنے کی اجازت دیتا ہے۔ نتیجے میں آنے والا صفحہ مرتب کیا جاتا ہے اور دستاویز فراہم کرنے کے لیے سرور پر چلایا جاتا ہے۔ مرتب شدہ صفحات کے ساتھ ساتھ کسی بھی منحصر جاوا لائبریری میں مشین کوڈ کے بجائے جاوا بائٹ کوڈ ہوتا ہے۔ کسی بھی دوسرے جار یا جاوا پروگرام کی طرح، کوڈ کو جاوا ورچوئل مشین (جے وی ایم) کے اندر انجام دیا جانا چاہیے جو ایک تجریدی، پلیٹ فارم غیر جانبدار ماحول فراہم کرنے کے لیے سرور کے میزبان آپریٹنگ سسٹم کے ساتھ تعامل کرتا ہے۔ جے ایس پیز عام طور پر ایچ ٹی ایم ایل اور ایکس ایم ایل دستاویزات فراہم کرنے کے لیے استعمال ہوتے ہیں، لیکن آؤٹ پٹ اسٹریم کے استعمال کے ذریعے، وہ دیگر اقسام کے ڈیٹا بھی فراہم کر سکتے ہیں۔ ویب کنٹینر جے ایس پی کے مضمر اشیاء جیسے درخواست، رسپانس، سیشن، ایپلی کیشن، کنفیگ، پیج، پیج کانٹیکسٹ، آؤٹ اور ایکسپشن بناتا ہے۔ جے ایس پی انجن ان اشیاء کو ترجمے کے مرحلے کے دوران تخلیق کرتا ہے۔ نحو ہدایات، اسکرپٹلیٹ، اور تاثرات، اعلامیہ جے ایس پیز اسکرپٹنگ افعال کے لیے کئی حد بندی کا استعمال کرتے ہیں۔ سب سے بنیادی <%.%> ہے، جو جے ایس پی اسکرپٹلیٹ کو گھیرے ہوئے ہے۔ اسکرپٹلیٹ جاوا کوڈ کا ایک ٹکڑا ہے جو اس وقت چلتا ہے جب صارف صفحہ کی درخواست کرتا ہے۔ دیگر عام حد بندی میں تاثرات کے لیے <% =.%> شامل ہیں، جہاں اسکرپٹلیٹ اور حد بندی کو اظہار کی تشخیص کے نتیجے سے تبدیل کیا جاتا ہے، اور ہدایات، جو <% @.%> کے ساتھ ظاہر ہوتی ہیں۔ جاوا کوڈ کو کسی ایک اسکرپٹلیٹ بلاک کے اندر مکمل یا خود مختار ہونے کی ضرورت نہیں ہے۔ یہ مارک اپ کے مواد کو پھیلا سکتا ہے، بشرطیکہ صفحہ مجموعی طور پر نحو کے لحاظ سے درست ہو۔ مثال کے طور پر، کسی بھی جاوا اگر/کے لیے/جبکہ ایک اسکرپٹلیٹ میں کھولے گئے بلاکس کو صفحہ کو کامیابی سے مرتب کرنے کے لیے بعد کے اسکرپٹلیٹ میں صحیح طریقے سے بند کیا جانا چاہیے۔ یہ کوڈ کو آپس میں ملنے کی اجازت دیتا ہے اور اس کے نتیجے میں پروگرامنگ کے ناقص طریقے سامنے آسکتے ہیں۔ وہ مواد جو جاوا کوڈ کے ایک تقسیم شدہ بلاک کے اندر آتا ہے (متعدد اسکرپٹلیٹس پر پھیلا ہوا) اس کوڈ کے تابع ہے۔ آئی ایف بلاک کے اندر موجود مواد صرف اس وقت آؤٹ پٹ میں ظاہر ہوگا جب آئی ایف کنڈیشن درست ہونے کا اندازہ کرے گی۔ اسی طرح، لوپ کی تعمیر کے اندر موجود مواد آؤٹ پٹ میں متعدد بار ظاہر ہو سکتا ہے، اس پر منحصر ہے کہ لوپ باڈی کتنی بار چلتی ہے۔ مثال جے ایس پی پیج میں لوپ کے لیے درج ذیل درست ہوگا: <p> تین تک گنتی: </p> <% کے لیے (انٹی i = 1 ؛ i <4 ؛ i + +) {%> <p> یہ نمبر <% = i%> ہے۔ </p> <%>> <p> ٹھیک ہے۔ </p> صارف کے ویب براؤزر میں ظاہر ہونے والی آؤٹ پٹ یہ ہوگی: تین تک گنتی: یہ نمبر 1 ہے۔ یہ نمبر 2 ہے۔ یہ نمبر 3 ہے۔ ٹھیک ہے۔ معیاری جے ایس پی ٹیگز استعمال بین ٹیگ جے ایس پی استعمال بین ٹیگ ڈویلپر کو جاوا بین تک رسائی اور تخلیق کرنے کے قابل بناتا ہے۔ اگرچہ استعمال بین ٹیگ کا استعمال ایچ ٹی ایم ایل ٹیگ کی طرح لگتا ہے، جاوا بینز کے لیے تمام جے ایس پی ٹیگ ایکس ایم ایل نحو کا استعمال کرتے ہیں۔ لہذا یوز بین ٹیگ پر مشتمل کوڈ کیس حساس ہے۔ یوز بین ٹیگ میں کئی صفات شامل ہیں۔ آئی ڈی خاصیت اس نام کا اعلان کرتی ہے جو پھلی تک رسائی حاصل کرنے کے لیے استعمال ہوتا ہے۔ کلاس کی خاصیت پھلی کے پیکیج اور کلاس کا اعلان کرتی ہے۔ دائرہ کار پھلی کو ذخیرہ کرنے کے لیے ذمہ دار شے کا اعلان کرتا ہے۔ دائرہ کار کی قیمت اس مدت کی وضاحت کرتی ہے جس کے لیے بین باقی جاوا ایپلی کیشن کے استعمال کے لیے دستیاب ہے۔ دائرہ کار مندرجہ ذیل چار اقدار میں سے ایک ہو سکتا ہے: دائرہ کار کا مطلب یہ ہے کہ پھلی مضمر طور پر بیان کردہ شے میں واقع ہے، اور صرف موجودہ صفحہ کے لیے دستیاب ہے۔ پہلے سے طے شدہ طور پر، تمام پھلیوں کی گنجائش ہوتی ہے۔ دائرہ کار کا مطلب ہے کہ پھلی کو شے میں پایا جا سکتا ہے۔ اس پھلی تک دیگر تمام جے ایس پیز اور سرولیٹس تک رسائی حاصل کی جا سکتی ہے جن کو موجودہ درخواست آبجیکٹ تک رسائی حاصل ہے۔ دائرہ کار کا مطلب ہے کہ پھلی کو شے میں پایا جا سکتا ہے۔ اس پھلی تک دیگر تمام جے ایس پیز اور سرولیٹس کے ذریعے رسائی حاصل کی جا سکتی ہے جن کو مخصوص شے تک رسائی حاصل ہے۔ دائرہ کار کا مطلب ہے کہ پھلی کو شے میں پایا جا سکتا ہے۔ اس پھلی تک دیگر تمام جے ایس پیز اور سرولیٹس کے ذریعے رسائی حاصل کی جا سکتی ہے جن کو مخصوص شے تک رسائی حاصل ہے۔ استعمال بین ٹیگ کا استعمال کرتے ہوئے ایک بین بنانے کے بعد، حاصل پراپرٹی اور سیٹ پراپرٹی ٹیگز کو بین کی خصوصیات کو حاصل کرنے اور ترتیب دینے کے لیے استعمال کیا جا سکتا ہے۔ جے ایس پی گیٹ پراپرٹی کا استعمال بنائی ہوئی پھلی کی جائیداد حاصل کرنے کے لیے کیا جاتا ہے۔ جے ایس پی سیٹ پراپرٹی ٹیگ کا استعمال پھلی کی خصوصیات کو ترتیب دینے کے لیے کیا جاتا ہے۔ گیٹ پراپرٹی اور سیٹ پراپرٹی ٹیگز کے لیے، نام کی خاصیت کو بین کا نام بتانے کے لیے استعمال کیا جاتا ہے۔ لہذا نام کی خاصیت کو یوز بین ٹیگ کے ذریعہ فراہم کردہ آئی ڈی خاصیت سے ملنا چاہیے۔ جے ایس پی تفصیلات کے ایکسپریشن لینگویج ورژن 2 نے ایکسپریشن لینگویج (ای ایل) کے لیے سپورٹ شامل کی، جو جاوا آبجیکٹ میں ڈیٹا اور افعال تک رسائی کے لیے استعمال ہوتی ہے۔ جے ایس پی 2.1 میں، اسے یونیفائیڈ ایکسپریشن لینگویج میں جوڑ دیا گیا تھا، جو جاوا سرور فیسز میں بھی استعمال ہوتا ہے۔ جے ایس پی ایکسپریشن لینگویج ایک کمپیکٹ نحو کا استعمال کرتی ہے جو ڈویلپر کو دی گئی درخواست آبجیکٹ سے صفات اور جاوا بین خصوصیات حاصل کرنے کے قابل بناتی ہے۔ ای ایل کا استعمال کرتے وقت، کوڈ کے آغاز میں ایک ڈالر کا نشان ("$") شامل کیا جانا چاہیے۔ ڈالر کی علامت کے بعد ایک افتتاحی کڑا ("{")، نیز ایک اختتامی کڑا ("}") ہوتا ہے۔ اس کے بعد کوڈ کو افتتاحی اور اختتامی منحنی خطوط کے درمیان لکھا جاتا ہے۔ مثال درج ذیل EL نحو کی ایک مثال ہے: آبجیکٹ جاوا بین میں متغیر کی قیمت ${javabean.variable} ہے۔ اضافی ٹیگز جے ایس پی نحو بلٹ ان فنکشنلٹی کو مدعو کرنے کے لیے اضافی ٹیگز شامل کرتا ہے، جنہیں جے ایس پی ایکشنز کہا جاتا ہے۔ مزید برآں، ٹیکنالوجی اپنی مرضی کے مطابق جے ایس پی ٹیگ لائبریریوں کی تخلیق کی اجازت دیتی ہے جو معیاری جے ایس پی نحو کی توسیع کے طور پر کام کرتی ہیں۔ ایسی ہی ایک لائبریری جے ایس ٹی ایل ہے۔ جکارتہ اسٹینڈرڈ ٹیگ لائبریری جکارتہ اسٹینڈرڈ ٹیگ لائبریری (جے ایس ٹی ایل) عام کاموں کی حمایت کرتی ہے جو جے ایس پیز میں انجام دیے جانے چاہئیں۔ مثالوں میں تکرار اور مشروط (جاوا میں "کے لیے" اور "اگر" بیانات کے مساوی) شامل ہیں۔ جے ایس ٹی ایل کی تمام کتب خانوں میں سے جے ایس ٹی ایل کور لائبریری سب سے زیادہ استعمال ہوتی ہے۔ سابقہ کا استعمال کرتے ہوئے جے ایس ٹی ایل کور لائبریری کے یو آر آئی کی وضاحت کے لیے ٹیگلب ہدایت کا استعمال کیا جانا چاہیے۔ اگرچہ سابقہ کے لیے بہت سے مختلف انتخاب ہیں، "سی" سابقہ عام طور پر اس لائبریری کے لیے استعمال ہوتا ہے۔ ایکس ایم ایل کے مطابق جے ایس پی جے ایس پی صفحات بھی مکمل طور پر درست ایکس ایم ایل نحو میں لکھے جا سکتے ہیں۔ اس طرح کی جے ایس پی فائلیں عام طور پر متبادل. جے ایس پی ایکس فائل ایکسٹینشن کا استعمال کرتی ہیں، جس کی وجہ سے عام طور پر ایپلیکیشن سرور ایکس ایم ایل نحو کی توثیق کرتا ہے۔ چونکہ عام جے ایس پی نحو <%.%> ایکس ایم ایل میں درست نہیں ہے، اس لیے ڈویلپر کو جے ایس پی کے فراہم کردہ متبادل ٹیگز کا استعمال کرنا چاہیے۔ مثال کے طور پر، عام <% @صفحہ.%> ہدایت کو اس کے بجائے <جے ایس پی: directive.page./> ٹیگ کے طور پر لکھا جا سکتا ہے، اور ٹیگ لائبریریوں کو معمول کے <% @ٹیگلیب.%> ٹیگ کے بجائے ایکس ایم ایل نیم اسپیس کا استعمال کرتے ہوئے درآمد کیا جاتا ہے۔ ایک جاوا سرور پیجز مرتب کرنے والا ایک ایسا پروگرام ہے جو جے ایس پیز کو تجزیہ کرتا ہے اور انہیں قابل عمل جاوا سرولیٹس میں تبدیل کرتا ہے۔ اس قسم کا ایک پروگرام عام طور پر ایپلیکیشن سرور میں سرایت کیا جاتا ہے اور پہلی بار جے ایس پی تک رسائی حاصل ہونے پر خود بخود چلتا ہے، لیکن صفحات کو بہتر کارکردگی کے لیے پہلے سے مرتب بھی کیا جا سکتا ہے، یا غلطیوں کی جانچ کے لیے تعمیر کے عمل کے ایک حصے کے طور پر مرتب کیا جا سکتا ہے۔ کچھ جے ایس پی کنٹینرز اس بات کو ترتیب دینے میں مدد کرتے ہیں کہ کنٹینر کتنی بار جے ایس پی فائل ٹائم اسٹیمپ چیک کرتا ہے یہ دیکھنے کے لیے کہ آیا صفحہ بدل گیا ہے۔ عام طور پر، یہ ٹائم اسٹیمپ سافٹ ویئر ڈویلپمنٹ کے دوران ایک مختصر وقفہ (شاید سیکنڈ)، اور تعینات کردہ ویب ایپلی کیشن کے لیے ایک طویل وقفہ (شاید منٹ، یا یہاں تک کہ کبھی نہیں) پر سیٹ کیا جاتا ہے۔ کتاب "موراکس جاوا سرولیٹس اینڈ جے ایس پی" کے مصنفین، جوئل موراچ اور مائیکل اربن کے مطابق، جے ایس پی میں جاوا کوڈ کو شامل کرنا عام طور پر برا عمل ہے۔ ایک بہتر طریقہ یہ ہوگا کہ جے ایس پی میں سرایت شدہ بیک اینڈ منطق کو جاوا کوڈ میں منتقل کیا جائے۔ اس منظر نامے میں، جے ایس پی پروسیسنگ کے لیے ذمہ دار ہے، اور جے ایس پی ایچ ٹی ایم ایل کی نمائش کے لیے ذمہ دار ہے، اور خدشات کی واضح علیحدگی کو برقرار رکھتا ہے۔ 2000 میں، "جاوا سرولیٹ پروگرامنگ" کے مصنف، جیسن ہنٹر نے جاوا سرور پیجز کے ساتھ متعدد "مسائل" بیان کیے۔ اس کے باوجود، انہوں نے لکھا کہ اگرچہ جے ایس پی "جاوا پلیٹ فارم کے لیے بہترین حل" نہیں ہو سکتا ہے لیکن یہ "جاوا حل تھا جو زیادہ تر غیر جاوا حل کی طرح ہے"، جس سے ان کا مطلب مائیکروسافٹ کے ایکٹو سرور پیجز تھا۔ بعد میں، اس نے اپنی سائٹ پر ایک نوٹ شامل کیا جس میں کہا گیا کہ جے ایس پی میں 2000 سے بہتری آئی ہے، لیکن اس نے اپنے حریفوں، اپاچی ویلوسیٹی اور چائے (ٹیمپلیٹ زبان) کا بھی حوالہ دیا۔ آج، کئی متبادلات اور بڑی ویب ایپس میں جے ایس پی پر مبنی کئی صفحات کو تکنیکی قرض سمجھا جاتا ہے۔ سرولیٹ کنٹینرز اپاچی ٹامکیٹ اپاچی ٹامی جیٹی (ویب سرور) گلاس فش اوریکل آئیپلینٹ ویب سرور ویب سپیئر ایپلی کیشن سرور جاوا پر مبنی ٹیمپلیٹ متبادل ایڈوب کولڈ فیوژن لوسی فری مارکر جے ایچ ٹی ایم ایل تھائملیف حوالہ جات مزید پڑھنے کے لیے حوالہ دیا گیا بیرونی لنکس جے ایس پی v2.0 نحو حوالہ جاوا سرور صفحات v2.0 نحو کارڈ (v1.2) جکارتہ سرور صفحات کی وضاحت، تازہ ترین سرکاری ٹیوٹوریل: جاوا ای ای 5 ٹیوٹوریل، باب 5، جاوا سرور صفحات ٹیکنالوجی سرولیٹ ہسٹری جاوا انٹرپرائز پلیٹ فارم جاوا تفصیلات ٹیمپلیٹ انجنوں کی درخواست کرتا ہے۔