۱ دی ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

۸ فریمورک جاوا برای دنیای ابری

این فریم ورک‌های سبک‌تر جاوا، انعطاف‌پذیری بومی ابری را با مهندسی آزمایش‌شده جاوا ترکیب می‌کنند، بنابراین می‌توانید کدهای پاسخگو بنویسید که به آسانی در هر مکانی قابل استقرار است.

این فریم ورک‌های سبک‌تر جاوا، انعطاف‌پذیری بومی ابری را با مهندسی آزمایش‌شده جاوا ترکیب می‌کنند، بنابراین می‌توانید کدهای پاسخگو بنویسید که به آسانی در هر مکانی قابل استقرار است.

زبان برنامه نویسی جاوا به خوبی وارد دهه سوم خود شده است و زبان و کد بایت آن در همه چیز، از تراشه های جاسازی شده تا مزارع سرورهای عظیم، جایگاهی پیدا کرده است. ترکیب جاوا از یک ماشین مجازی جامد سنگی و مجموعه بزرگی از کتابخانه ها، یک اکوسیستم حاصلخیز برای نوشتن کد ایجاد می کند که در همه جا اجرا می شود.

با این حال، یکی از زمینه‌هایی که جاوا در آن با مشکل مواجه شده است، دنیای سرورها است که اغلب باید اتصالات هزاران یا حتی میلیون‌ها کاربر را کنترل کند. در سال های اولیه، ابزارهای جاوا یکی از بهترین ها برای ایجاد برنامه های کاربردی سمت سرور بودند که منطق تجاری را برای همه کاربران اعمال می کردند. چارچوب‌های جاوا مانند J2EE، Hibernate، Spring و مدل اصلی سرولت‌های جاوا ایجاد برنامه‌های کاربردی وب قوی را نسبتاً آسان کردند.

این فناوری تا زمانی که جاوا اسکریپت و Node.js ظاهر شدند رشد کرد. Node.js توجه زیادی را به خود جلب کرد و توسعه دهندگان شروع به مهاجرت به محیط زمان اجرا جاوا اسکریپت کردند. به طور کلی دو دلیل وجود داشت: اول، توسعه دهندگان از این فرصت برای اجرای همان کد روی سرور و یک مشتری مرورگر استقبال کردند. دوم، سرورهای Node.js اغلب به‌خاطر مدل واکنش‌پذیرشان، توان عملیاتی بسیار سریع‌تری ارائه می‌دهند.

اکوسیستم جاوا برای رقابت سازگار شده است. برای شروع، برخی از توسعه دهندگان از ابزارهایی مانند Google Web Toolkit استفاده کردند که جاوا را به جاوا اسکریپت ترجمه می کند. بعد، آنها برای افزایش سرعت جاوا روی سرور کار کردند. فریمورک های اولیه جاوا برای سرور یک محدودیت داشتند: هر درخواست ورودی رشته مخصوص به خود را می داد. این یک روش تمیز برای سازماندهی داده های ورودی و خروجی بود، اما مالیات هم داشت. ایجاد یک موضوع هزاران بایت سربار نیاز دارد، که می تواند تعداد کاربرانی را که هر سرور می تواند مدیریت کند، محدود کند. Node.js از مدل متفاوتی استفاده کرد که به آن اجازه داد تا کاربران بیشتری را بدون این سربار فریب دهد.

اخیراً، توسعه‌دهندگان جاوا نوآوری‌هایی را از Node.js به پشته جاوا آورده‌اند، به‌ویژه چارچوب‌های جاوا بومی ابری. این فریم ورک‌ها از رویکرد Node.js تقلید می‌کنند و از توابع سبکی پشتیبانی می‌کنند که روی ماشین‌های ابری اجرا می‌شوند و می‌توانند به سرعت شروع و متوقف شوند. آنها از کتابخانه های اضافی برای پشتیبانی از استقرار سریع در باریک ترین نمونه های سرور موجود صرف نظر می کنند. چارچوب‌های جاوا بومی ابری برای پشتیبانی از مجموعه‌های سرویس‌های خرد طراحی شده‌اند که می‌توانند به طور مستقل نصب و راه‌اندازی مجدد شوند. آنها معمولاً در کانتینرهایی مانند Docker یا Podman برای سریع‌ترین ساخت و نصب ممکن ارسال می‌شوند.

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

ابرهای صنعت امروز متفاوت هستند

Micronaut

سازندگان Micronaut می‌خواستند از بهترین بخش‌های چارچوب‌های کلاسیک جاوا مانند Spring و Grails استفاده کنند – مانند پیکربندی انعطاف‌پذیر و تزریق وابستگی – اما ردپای سنگین حافظه و راه‌اندازی کندی را که آنها را ایجاد کرده است، از بین ببرند. برای توسعه میکروسرویس ها کمتر مطلوب است. آنها با دقت حاشیه‌نویسی‌هایی را طراحی کردند که اطلاعات کافی برای تزریق وابستگی را بدون بازتاب پر کردن حافظه مورد استفاده در چارچوب‌های قدیمی‌تر ارائه می‌دهند. انجام بیشتر تنظیمات Micronaut در زمان کامپایل به این معنی است که کد سریع‌تر و سبک‌تر اجرا می‌شود.

این فریم ورک برای پشتیبانی از انواع زبان‌های مبتنی بر JVM (در حال حاضر جاوا، کاتلین و Groovy) و اجرای آنها در ابرهای مختلف ساخته شده است. فایل‌های پیکربندی از پیش تعریف‌شده، استقرار عملکردهای سرور یا بدون سرور را در تمام ابرهای اصلی ساده می‌کنند، و صفحات اسناد به خوبی نوشته شده برای همه اتصالات اصلی پایگاه داده وجود دارد.

توسعه‌دهندگان Micronaut همچنین می‌خواهند این چارچوب از کار تیمی توسعه خوب پشتیبانی کند. یک پیاده‌سازی HttpClient با پروژه همراه است تا نوشتن تست‌های واحد را بدون ترک Micronaut یا اضافه کردن کار بیشتر ساده‌سازی کند. این تست ها اغلب ساده تر و جامع تر از تست های مورد نیاز برای چارچوب های پویا هستند. این دوباره به لطف کار انجام شده در زمان کامپایل است.

Micronaut فقط برای توسعه برنامه‌های کاربردی با توابع ابری نیست. چارچوب به اندازه کافی عمومی است که از نقش های سنتی و برخی برنامه های دسکتاپ پشتیبانی کند. ادغام دقیق آن با GraalVM امکان استفاده از Micronaut را برای تولید برنامه های کاربردی بومی فراهم می کند.

کوارکوس

توسعه دهندگانی که می خواهند از ترکیبی از کدهای ضروری و واکنشی که به خوبی درک شده استفاده کنند، می توانند به Quarkus مراجعه کنند. تیم کوارکوس با پیش‌بینی رایج‌ترین موارد استفاده برای توسعه ابری شروع کرد، سپس چارچوبی را با نمونه‌هایی ساخت که از آن موارد استفاده با پیکربندی صفر پشتیبانی می‌کرد. نتیجه به راحتی در یک ظرف قرار می گیرد و در یک خوشه Kubernetes مستقر می شود.

تیم توسعه توجه ویژه‌ای به اطمینان از زمان‌های راه‌اندازی سریع کرد تا خوشه‌های Kubernetes بتوانند به سرعت بزرگ شوند. این یک ویژگی ایده‌آل برای عملکردهایی است که به صورت پراکنده اجرا می‌شوند، زیرا می‌توان آن‌ها را تا فراخوانی سرد رها کرد.

یکی از اهداف پروژه پذیرش و گسترش بسیاری از استانداردها و کتابخانه های موجود است که در جامعه جاوا رایج هستند. به عنوان مثال، حاشیه نویسی JAX-RS نقاط پایانی REST را تعریف می کند. پیکربندی با Eclipse MicroProfile شروع می شود. تیم توسعه Quarkus همچنین بیش از ۵۰ کتابخانه استاندارد را ادغام کرده است، بنابراین شانس خوبی برای شناسایی الگوهای طراحی در موارد خاص وجود دارد.

شما می توانید از چارچوب اصلی Quarkus برای انواع خدمات استفاده کنید. با شروع Quarkus 2.8، توسعه دهندگان Quarkus هستند. به آرامی مدل RESTeasy Reactive را تشویق کنید. اگر در حال شروع یک پروژه جدید هستید، این گزینه استاندارد است، اما مجبور نیستید از آن استفاده کنید. RESTeasy Reactive ساختار و الگوهای ساده‌تری را ارائه می‌دهد. به جای اختصاص دادن یک رشته به هر درخواست، مجموعه‌ای از رشته‌های غیر مسدود کننده تمام ورودی/خروجی را مدیریت می‌کنند و در صورت نیاز کد شما را فراخوانی می‌کنند.

5 روش برای استفاده از هوش مصنوعی و یادگیری ماشین در دیتااپ ها

Quarkus همچنین طیف گسترده ای از گزینه های استقرار را در بر می گیرد. در حالی که گفته می‌شود “اول کانتینر” است، می‌تواند روی فلز خالی اجرا شود. همچنین یک گزینه پیکربندی داخلی به نام Funqy وجود دارد که ایجاد عملکردهای پذیرفته شده توسط AWS Lambda، Azure Functions، Knative و چند گزینه دیگر را ساده می‌کند.

عملکردهای ابر بهار

توسعه دهندگان جاوا به خوبی با فریم ورک Spring آشنا هستند زیرا این چارچوب برای حدود دو دهه پایه و اساس بسیاری از پروژه ها بوده است. توسعه دهندگان Spring تصمیم گرفتند نسخه جدیدی را ایجاد کنند که برای استقرار ابری و همچنین برخی نقش های دیگر مناسب تر است. توابع موجود در Spring Cloud Functions به این معناست که به راحتی در انواع وظایف مانند خدمات وب، پردازش جریانی یا کارهای پس‌زمینه مجدداً مستقر شوند.

چارچوب Spring Cloud Functions بسیاری از همان سنت‌های فلسفی را که توسط Spring آغاز شده است، ادامه می‌دهد. توابع ابری در این چارچوب از سبک واکنشی یا امری و همچنین ترکیبی ترکیبی از هر دو پشتیبانی می‌کنند.

پشتیبانی از طیف گسترده ای از گزینه ها یک هدف بزرگ برای پروژه است. آداپتورهایی وجود دارند که عملکردها را در AWS Lambda، Microsoft Azure، Apache OpenWhisk، Google Cloud Platform، و چند محیط عملکرد ابری رایج دیگر. همچنین آداپتورهایی برای چارچوب‌های پخش اصلی مانند  Apache Kafka، تسلی، و RabbitMQ، و همچنین گزینه مستقل < a href="https://spring.io/projects/spring-cloud-stream" rel="nofollow">Spring Cloud Stream. بسته بندی و استقرار به شدت خودکار است، بنابراین می توانید روی توسعه خود عملکردها تمرکز کنید.

تیم توسعه Spring Cloud Functions نیز برای رسیدگی به بسیاری از دام‌ها و چالش‌های رایج در استقرار ابر سخت کار کرد. Spring Cloud Skipper می‌تواند برای جابه‌جایی استقرار در چندین ابر استفاده شود. Spring Cloud Sleuth با ردیابی جریان‌های داده، به اشکال‌زدایی کمک می‌کند. Spring Cloud Security بسیاری از کارهای مربوط به ایمن سازی یک برنامه را مدیریت می کند تا فقط افراد مناسب بتوانند توابع را اجرا کنید به تنهایی چندین ده زیر پروژه مختلف وجود دارد.

این پروژه پایه بسیار خوبی برای توزیع برنامه های کاربردی تجاری از طریق پلتفرم های مختلف است. هنگامی که منطق برنامه شما در یک Cloud Function POJO کپسوله می شود، می تواند خانه ای پیدا کند که در ده ها نقش مختلف کار می کند.

نسخه x

سازندگان Vert.x می‌خواستند با ساده‌سازی حلقه رویداد و بهینه‌سازی ارتباط با یک چارچوب بسیار سریع ایجاد کنند. پایگاه داده. Vert.x دارای یک حلقه رویداد واحد مانند Node.js است که به آن اجازه می‌دهد تا با رسیدن رویدادها چندین اتصال را انجام دهد. همچنین از مدل threading جاوا برای پردازش رویدادها با چندین رشته در یک Pool استفاده می‌کند که در صورت در دسترس بودن ممکن است روی چندین هسته اجرا شود.

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

تیم توسعه Vert.x درباره چشم انداز خود جزمی نیست. آنها اغلب می گویند که Vert.x یک جعبه ابزار است نه یک چارچوب. کد ماژولار است، بنابراین شما می توانید انتخاب کنید و انتخاب کنید که از کدام ویژگی استفاده کنید و معماری متناسب با برنامه خود را جمع آوری کنید. برنامه نویسانی که به جای ساختار واکنشی، ساختار ضروری بیشتری را می خواهند، می توانند از کوروتین های کاتلین پشتیبانی کنند.

مقدمه ای ملایم برای تجزیه و تحلیل کد استاتیک

این پروژه بخشی از اکوسیستم Eclipse است. انواع نسخه ها و گزینه ها آزادی زیادی را ارائه می دهند. برای مثال، تولیدکننده برنامه Vert.x، کدهای جاوا یا کاتلین را با ده‌ها وابستگی احتمالی مانند الگو تولید می‌کند. موتورها یا پشتیبانی API.

Eclipse MicroProfile

تیم Eclipse پروژه MicroProfile را به عنوان راهی برای انطباق Jakarta EE برای اجرای صور فلکی کوچکتر از ریزسرویس ها. در حالی که کتابخانه‌هایی را که تقریباً برای بسیاری از معماری‌های میکروسرویس استاندارد هستند، در کنار هم قرار می‌دهد.

این رویکرد برای توسعه دهندگانی که ممکن است در حال انتقال کد از پروژه های جاوا EE یا جاکارتا EE بزرگتر و قدیمی تر باشند، بسیار جذاب است. بسیاری از پیکربندی و معماری یکسان باقی می مانند. در بسیاری از موارد، تنظیمات جزئی هستند. اما این طراحی تصمیماتی را تشویق می‌کند که ایجاد کدهای سبک‌تر و سریع‌تر را ساده‌تر می‌کند. برخی از توسعه‌دهندگان از MicroProfile به‌عنوان پله‌ای در راه رسیدن به چارچوب‌های مدرن‌تر بومی ابری استفاده می‌کنند.

Dropwizard

برخی از توسعه دهندگان علاقه طبیعی به ماژول های قدیمی تر و آزمایش شده دارند و از Dropwizard لذت خواهند برد. تیم توسعه Dropwizard همیشه بر کلماتی مانند stable و mature تاکید کرده است. آن‌ها ماژول‌هایی را برای اتصالات پایگاه داده مانند Hibernate جمع‌آوری کردند و در چارچوب‌هایی برای فرم و سایر مؤلفه‌های استاندارد برنامه کاربردی وب ترکیب کردند. Dropwizard همچنین فرآیندهای تزریق وابستگی و نگهداری در زمان اجرا مانند پیکربندی و گزارش را ساده می‌کند.

Dropwizard مورد علاقه تیم هایی است که برای بازبینی و گسترش یک برنامه موجود کار می کنند. این ساختار با رویکردهای قدیمی و بالغ سازگار است زیرا بر اساس آنها ساخته شده است.

چارچوب‌های راه‌انداز برای پلتفرم‌های ابری

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

به عنوان مثال، تیم توسعه Google Cloud Platform به صورت منبع باز چارچوب اصلی خود را برای توابع جاوا که در function-as-a-service (FaaS) اجرا می شوند. کد ساخته شده با استفاده از آن برای ادغام سریع با راه‌اندازهای استاندارد GCP است، اگرچه می‌تواند با موفقیت در هر ماشین محلی اجرا شود.

مایکروسافت همچنین چارچوب خود را برای جاوا منبع باز کرد. این مدل شامل چندین روال برای ساده‌سازی انتقال داده‌ها مانند یک کتابخانه برای ترجمه داده‌های JSON به و خارج از جاوا POJO است. اگر ماشه تابع فراداده را همراه با فراخوانی ارائه کند، چارچوب مستقیماً آن را مدیریت می‌کند.

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