منصوبے کے بارے میں
JUI ایک ہلکا پھلکا Java فریم ورک ہے جو انٹرایکٹو ویب ایپلیکیشنز بنانے کے لیے مخصوص طور پر چھوٹے ایپلیکیشن سطح کے ساتھ تیار کیا گیا ہے۔ معیاری API `it.jui.framework` کے تحت موجود ہے اور ایک سادہ ماڈل پر عمل کرتا ہے: `JuiApp` کو نافذ کریں، `UIContext` حاصل کریں، اور کمپیکٹ Java کالز جیسے `ui.title(...)`، `ui.textInput(...)`، `ui.button(...)`، `ui.table(...)` اور `ui.map(...)` کا استعمال کرتے ہوئے ایپلیکیشن کو بیان کریں۔ JUI پھر HTTP، براؤزر رینڈرنگ اور سیشن اسٹیٹ کو سنبھالتا ہے۔
ایک کم از کم ایپلیکیشن `JuiApp` کو نافذ کرتی ہے اور `run(UIContext ui)` کو اوور رائڈ کرتی ہے، جس میں `ui.title(...)` اور `ui.text(...)` جیسے طریقوں کو کال کیا جاتا ہے۔ انٹرایکٹو ایپلیکیشنز `ui.textInput(...)` اور `ui.slider(...)` جیسے ان پٹس کو پڑھ سکتی ہیں، اور `ui.button(...)` پر ردعمل ظاہر کر سکتی ہیں، جو کہ ون شاٹ ایونٹ سیمانٹکس کا استعمال کرتا ہے: ایک کلک اس کلک سے ٹرگر ہونے والی رینڈرنگ کے لیے `true` کی قیمت دیتا ہے اور پھر کھپا جاتا ہے۔ موجودہ API میں ویجیٹ کی حالت کو ویجیٹ لیبل سے مقرر طریقے سے (deterministically) کی کیا جاتا ہے۔
ٹیکسٹ پر مبنی APIs ڈیفالٹ طور پر HTML کو فرار (escape) کرتے ہیں، جبکہ خام HTML کو `ui.html(...)` کے ذریعے واضح طور پر بیان کیا جانا چاہیے۔ ایک CLI معیاری ٹیمپلیٹ سے سورس فائل بنانے (`init`)، اسے چلانے (`run`) اور اسے دیکھنے (`watch`) کی حمایت کرتا ہے۔ JUI ایپلیکیشن کے سورس کو موجودہ JDK کا استعمال کرتے ہوئے کمپائل کرتا ہے اور اسے بلٹ ان HTTP سرور کے ذریعے پیش کرتا ہے۔
پروجیکٹ کو ماڈیولز میں منظم کیا گیا ہے: `jui-core` موجودہ نفاذ اور معیاری API ہے، جبکہ `jui-core-old` ایک ورثہ (legacy) نفاذ ہے جسے صرف تاریخی/حوالہ جاتی مقاصد کے لیے برقرار رکھا گیا ہے۔ دیگر ماڈیولز اور پلے گراؤنڈ کوڈ میں اب بھی ورثہ مثالیں شامل ہو سکتی ہیں اور انہیں API کے حقیقی ماخذ کے طور پر نہیں سمجھا جانا چاہیے۔
ایک طے شدہ طویل مدتی ڈیزائن کا ہدف JUI کو چھوٹے مقامی LLMs کے ذریعے کوڈ جنریشن کے لیے خاص طور پر موزوں بنانا ہے، جس میں کم سورس ٹوکنز، کم فریم ورک سیاق و سباق اور مقرر APIs کو ترجیح دی جاتی ہے۔ ڈیزائن کے اصول کو "صارف کی نیت سے چلتی ہوئی ایپلیکیشن تک کم سے کم ٹوکنز" کے طور پر بیان کیا گیا ہے۔ مستقبل کے کام میں زیادہ معنایی کثافت والے ایپلیکیشن پرمیٹوز، ایک کمپیکٹ تصدیق شدہ ایپلیکیشن ماڈل/IR، LLM سیاق و سباق کے لیے مشین جنریٹڈ API میٹا ڈیٹا، اور مقرر پیکیجنگ/ڈیپلائمنٹ کو ترجیح دی جائے گی۔
پروجیکٹ `mvn test` کے ساتھ بلڈ ہوتا ہے؛ معمول کے یونٹ ٹیسٹ سوٹ کو خود بخود ختم ہونا چاہیے، اور بلاک کرنے والے سرور کو شروع کرنے والے مینول ٹیسٹس کو Maven یونٹ ٹیسٹ لائف سائیکل سے غیر فعال رکھا جاتا ہے۔ JUI کو Apache License 2.0 کے تحت لائسنس یافتہ کیا گیا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.