درباره ما

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

EE4J

EE4J یک پروژه متن باز است که توسط بنیاد Eclipse در سال ۲۰۱۷ آغاز شد و به منظور انتقال و توسعه بیشتر Java EE (Java Enterprise Edition) تحت نظارت این بنیاد است. EE4J مخفف "Enterprise Edition for Java" است و هدف آن توسعه و پیشرفت Java EE به عنوان یک پروژه متن باز است. Java EE در طول سالیان زیادی توسط شرکت Sun Microsystems و سپس Oracle توسعه یافته بود، اما با ایجاد EE4J، این پروژه به بنیاد Eclipse منتقل شد تا جامعه بزرگی از توسعه‌دهندگان و شرکت‌ها بتوانند به توسعه و پیشرفت آن کمک کنند. EE4J شامل مجموعه‌ای از پروژه‌های متن باز است که هر کدام بر روی یکی از اجزای Java EE متمرکز شده‌اند. این پروژه‌ها شامل مواردی مانند Jakarta Servlet، Jakarta Persistence (JPA)، Jakarta RESTful Web Services، و Jakarta Server Faces است. با توجه به EE4J، توسعه‌دهندگان می‌توانند به طور فعال در توسعه و پیشرفت استانداردهای Java EE شرکت کنند، ابزارهای جدید را برای توسعه برنامه‌های مبتنی بر این استانداردها ایجاد کنند، و به ادامه و توسعه جامعه Java EE کمک کنند. EE4J نشان از تمرکز جامعه بر روی جلب شفافیت و شرکت در فرآیند توسعه Java EE دارد، که این امر می‌تواند به ایجاد استانداردهای بهتر و پیشرفته‌تر برای توسعه برنامه‌های Enterprise در زمینه‌هایی مانند امنیت، کارایی، و انعطاف‌پذیری کمک کند.

JakartaEE

Jakarta EE (Enterprise Edition) یک پلتفرم قوی و جامع برای توسعه و اجرای برنامه‌های سازمانی جاوا است. این پلتفرم که به عنوان جانشین Java EE (Java Platform, Enterprise Edition) توسعه یافته، تحت نظارت بنیاد Eclipse قرار دارد و شامل مجموعه‌ای از استانداردها و APIهای مورد نیاز برای ساخت برنامه‌های سازمانی بزرگ و پیچیده است. ویژگی‌ها و مزایای کلیدی Jakarta EE عبارتند از: توسعه سریع و آسان: Jakarta EE با ارائه مجموعه‌ای از APIها و سرویس‌های استاندارد، فرآیند توسعه برنامه‌های سازمانی را ساده و سریع می‌کند. این استانداردها شامل مواردی مانند مدیریت تراکنش، امنیت، سرویس‌های وب، و ارتباط با دیتابیس هستند. پشتیبانی از استانداردهای صنعتی: Jakarta EE مجموعه‌ای از مشخصات استاندارد صنعتی را فراهم می‌کند که توسط بسیاری از سرورهای برنامه سازمانی پشتیبانی می‌شوند. این استانداردها شامل Servlet، JPA (Java Persistence API)، EJB (Enterprise JavaBeans)، JAX-RS (Java API for RESTful Web Services) و بسیاری دیگر هستند. قابلیت مقیاس‌پذیری و استقرار: برنامه‌های توسعه‌یافته با Jakarta EE به راحتی می‌توانند در محیط‌های مختلف از جمله سرورهای برنامه سازمانی و محیط‌های ابری مستقر شوند. این پلتفرم به توسعه‌دهندگان امکان می‌دهد برنامه‌هایی با قابلیت مقیاس‌پذیری بالا و استقرار آسان ایجاد کنند. مدیریت تراکنش‌ها: Jakarta EE امکانات قدرتمندی برای مدیریت تراکنش‌ها فراهم می‌کند که توسعه‌دهندگان را قادر می‌سازد تراکنش‌های پیچیده را به صورت دکلاراتیو یا برنامه‌نویسی مدیریت کنند. امنیت: Jakarta EE ابزارها و APIهایی برای مدیریت امنیت، احراز هویت و مجوزدهی ارائه می‌دهد. این ویژگی‌ها به برنامه‌های سازمانی کمک می‌کند تا در برابر تهدیدات امنیتی محافظت شوند. پشتیبانی از میکروسرویس‌ها: Jakarta EE با پشتیبانی از استانداردهایی مانند MicroProfile به توسعه‌دهندگان کمک می‌کند تا برنامه‌های میکروسرویس قوی و مقیاس‌پذیر ایجاد کنند. MicroProfile شامل مجموعه‌ای از APIها و مشخصات اضافی است که به طور خاص برای میکروسرویس‌ها طراحی شده‌اند. اکوسیستم گسترده: Jakarta EE به دلیل تاریخچه طولانی و پذیرش گسترده در صنعت، از اکوسیستم گسترده‌ای از ابزارها، کتابخانه‌ها و چارچوب‌ها پشتیبانی می‌کند. این اکوسیستم به توسعه‌دهندگان کمک می‌کند تا از بهترین ابزارها و تکنولوژی‌های موجود برای توسعه برنامه‌های خود بهره‌مند شوند. توسعه مبتنی بر کامپوننت: Jakarta EE از مدل‌های کامپوننتی مانند EJB و CDI (Contexts and Dependency Injection) پشتیبانی می‌کند که به توسعه‌دهندگان امکان می‌دهد برنامه‌هایی با انعطاف‌پذیری بالا و قابلیت نگهداری آسان ایجاد کنند. با توجه به این ویژگی‌ها و قابلیت‌ها، Jakarta EE یک پلتفرم ایده‌آل برای توسعه برنامه‌های سازمانی بزرگ، مقیاس‌پذیر و پایدار است که نیازهای پیچیده کسب‌وکارها را برآورده می‌کند. این پلتفرم به توسعه‌دهندگان کمک می‌کند تا با استفاده از استانداردهای صنعتی و ابزارهای قدرتمند، برنامه‌هایی با کیفیت بالا و عملکرد بهینه ایجاد کنند.

Microprofile

MicroProfile یک مجموعه‌ای از مشخصات و استانداردها برای توسعه میکروسرویس‌های جاوا است که به طور خاص برای نیازهای برنامه‌های میکروسرویس بومی ابری طراحی شده است. این پروژه در سال 2016 با همکاری چندین شرکت بزرگ صنعت نرم‌افزار آغاز شد تا نیازهای مشترک برای توسعه‌دهندگان جاوا در زمینه میکروسرویس‌ها را برآورده سازد. هدف MicroProfile این است که قابلیت‌های کلیدی و مورد نیاز برای توسعه، استقرار و مدیریت میکروسرویس‌ها را فراهم کند. مشخصات اصلی MicroProfile شامل: Config: مدیریت پیکربندی‌ها به صورت پویا و مرکزی. Fault Tolerance: ارائه الگوهای تحمل خطا مانند بازگشت و زمان‌بندی مجدد. JWT Propagation: مدیریت هویت و امنیت با استفاده از JSON Web Tokens. Metrics: جمع‌آوری و گزارش‌دهی معیارهای عملکردی. Health Checks: بررسی وضعیت سلامت سرویس‌ها برای اطمینان از عملکرد صحیح آنها. OpenAPI: مستندسازی و تعامل با API‌ها. REST Client: ساده‌سازی ارتباط با سرویس‌های RESTful. OpenTracing: ردگیری درخواست‌ها در سراسر سیستم برای یافتن نقاط ضعف و بهبود عملکرد. این استانداردها به توسعه‌دهندگان کمک می‌کند تا برنامه‌های میکروسرویس پایدار، مقیاس‌پذیر و قابل نگهداری بسازند و آنها را به راحتی در محیط‌های مدرن ابری مانند Kubernetes و OpenShift مستقر کنند. MicroProfile با تکیه بر استانداردهای جاوا (Jakarta EE) امکان استفاده از ابزارها و کتابخانه‌های شناخته‌شده و آزموده‌شده را فراهم می‌کند و تجربه توسعه را بهبود می‌بخشد.

Quarkus

Quarkus یک فریمورک نوآورانه برای توسعه برنامه‌های جاوا است که به طور خاص برای محیط‌های بومی ابری و میکروسرویس‌ها طراحی شده است. این فریمورک توسط Red Hat توسعه یافته و بر بهره‌وری توسعه‌دهندگان، زمان راه‌اندازی سریع، و مصرف بهینه حافظه تمرکز دارد. ویژگی‌های کلیدی Quarkus شامل: بهینه‌سازی بومی ابری: Quarkus به طور خاص برای اجرا در محیط‌های Kubernetes و OpenShift بهینه‌سازی شده است و از ویژگی‌های بومی ابری مانند مقیاس‌پذیری خودکار و مدیریت کانتینرها پشتیبانی می‌کند. زمان راه‌اندازی سریع و مصرف کم حافظه: با استفاده از GraalVM و تکنیک‌های کامپایل Ahead-of-Time (AOT)، برنامه‌های Quarkus می‌توانند به سرعت راه‌اندازی شوند و حافظه کمی مصرف کنند. این ویژگی‌ها به خصوص برای اجرای برنامه‌ها در محیط‌های ابری و سرورلس حیاتی هستند. توسعه‌دهنده پسند: Quarkus تجربه توسعه‌دهی مطلوبی را فراهم می‌کند که شامل ویژگی‌هایی مانند hot-reload است که به توسعه‌دهندگان اجازه می‌دهد تا تغییرات خود را به سرعت مشاهده کنند و بازدهی توسعه را افزایش دهند. اکوسیستم گسترده: Quarkus از اکوسیستم غنی و گسترده‌ای از کتابخانه‌ها و افزونه‌های جاوا پشتیبانی می‌کند. این شامل پشتیبانی از Hibernate، RESTEasy، Kafka، و بسیاری دیگر از فریمورک‌ها و ابزارهای محبوب است. تزریق وابستگی و مدیریت کانتکست: Quarkus از CDI (Contexts and Dependency Injection) پشتیبانی می‌کند که به توسعه‌دهندگان امکان می‌دهد وابستگی‌ها را به طور مؤثری مدیریت کنند و برنامه‌های مقیاس‌پذیر و نگهداری‌پذیر ایجاد کنند. پشتیبانی از MicroProfile: Quarkus به طور کامل از مشخصات Eclipse MicroProfile پشتیبانی می‌کند که به توسعه‌دهندگان اجازه می‌دهد از استانداردهای صنعتی برای توسعه میکروسرویس‌های بومی ابری استفاده کنند. عملکرد بالا و قابلیت ادغام: Quarkus با ارائه عملکرد بالا و قابلیت ادغام آسان با ابزارهای توسعه و استقرار مدرن، به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌هایی با کیفیت بالا و مقیاس‌پذیر ایجاد کنند. Quarkus به دلیل این ویژگی‌ها و تمرکز بر بهینه‌سازی برای محیط‌های بومی ابری، به یکی از فریمورک‌های محبوب برای توسعه‌دهندگان جاوا تبدیل شده است که به دنبال ساخت میکروسرویس‌ها و برنامه‌های کاربردی سبک و کارآمد برای اجرا در محیط‌های مدرن ابری هستند.

Helidon

Helidon یک فریمورک جاوا است که برای توسعه میکروسرویس‌های بومی ابری طراحی شده است. این فریمورک توسط Oracle توسعه یافته و دارای دو نسخه اصلی است: Helidon SE و Helidon MP. Helidon SE (Serverless Environment): این نسخه یک فریمورک سبک و واکنشی است که به توسعه‌دهندگان اجازه می‌دهد تا با استفاده از الگوی برنامه‌نویسی تابعی، میکروسرویس‌های کارآمد و سریع ایجاد کنند. Helidon SE بدون نیاز به اجزای اضافی و با یک طراحی مینیمالیستی، مناسب برای برنامه‌هایی است که نیاز به کنترل دقیق‌تری بر روی هر جنبه‌ای از میکروسرویس‌ها دارند. Helidon MP (MicroProfile): این نسخه از مشخصات Eclipse MicroProfile پیروی می‌کند و یکپارچگی کاملی با استانداردهای Jakarta EE دارد. Helidon MP برای توسعه‌دهندگانی که به دنبال استفاده از قابلیت‌های استاندارد صنعتی مانند تزریق وابستگی، امنیت، مدیریت پیکربندی و قابلیت‌های تحمل خطا هستند، بسیار مناسب است. ویژگی‌های کلیدی Helidon شامل: پیکربندی انعطاف‌پذیر: Helidon از سیستم پیکربندی انعطاف‌پذیری بهره می‌برد که به توسعه‌دهندگان اجازه می‌دهد تا پیکربندی‌ها را از منابع مختلف مانند فایل‌های YAML، فایل‌های properties، و محیط‌های ابری مدیریت کنند. تزریق وابستگی (Dependency Injection): Helidon MP از CDI (Contexts and Dependency Injection) پشتیبانی می‌کند که به توسعه‌دهندگان امکان می‌دهد وابستگی‌ها را به طور مؤثری مدیریت کنند و برنامه‌های مقیاس‌پذیر و نگهداری‌پذیر ایجاد کنند. مقیاس‌پذیری و عملکرد بالا: هر دو نسخه Helidon برای عملکرد بالا و مقیاس‌پذیری طراحی شده‌اند. Helidon SE به ویژه برای اجرای سریع و واکنشی مناسب است، در حالی که Helidon MP به توسعه‌دهندگان امکان می‌دهد از قابلیت‌های استاندارد صنعتی برای ساخت میکروسرویس‌های قوی و پایدار بهره ببرند. پشتیبانی از OpenAPI و دیگر استانداردها: Helidon از OpenAPI برای مستندسازی و تعامل با API‌ها پشتیبانی می‌کند و این امکان را فراهم می‌کند که به راحتی API‌های خود را مستند و تست کنید. پشتیبانی از امنیت و تحمل خطا: Helidon ابزارها و قابلیت‌هایی برای مدیریت امنیت، احراز هویت و مجوزدهی، و همچنین ویژگی‌های تحمل خطا فراهم می‌کند. Helidon با ترکیب انعطاف‌پذیری و کارایی، به توسعه‌دهندگان جاوا اجازه می‌دهد تا میکروسرویس‌های سبک و کارآمدی را بسازند که به خوبی در محیط‌های بومی ابری اجرا شوند. این فریمورک به عنوان یک گزینه محبوب برای ساخت برنامه‌های مدرن بومی ابری و میکروسرویس‌ها شناخته می‌شود.

Spring

Spring Framework یک چارچوب جامع و پرکاربرد برای توسعه برنامه‌های جاوا است که توسط Pivotal Software (اکنون بخشی از VMware) توسعه و نگهداری می‌شود. این چارچوب به توسعه‌دهندگان کمک می‌کند تا برنامه‌های کاربردی پیچیده و قوی را با استفاده از بهترین شیوه‌ها و الگوهای طراحی به‌صورت مدولار و قابل نگهداری ایجاد کنند. ویژگی‌های کلیدی Spring Framework شامل: Inversion of Control (IoC): مدیریت وابستگی‌ها و تزریق آنها به صورت خودکار، که باعث جدا شدن بخش‌های مختلف کد از یکدیگر و افزایش تست‌پذیری می‌شود. Aspect-Oriented Programming (AOP): فراهم‌سازی قابلیت‌های برنامه‌نویسی جنبه‌گرا برای جداسازی نگرانی‌های مقطعی مانند امنیت، تراکنش‌ها، و مدیریت لاگ‌ها. Data Access: پشتیبانی از انواع مختلف منابع داده از جمله JDBC، JPA، Hibernate و سایر فناوری‌های دسترسی به داده. Transaction Management: مدیریت تراکنش‌ها به‌صورت دکلاراتیو و برنامه‌نویسی، که انعطاف‌پذیری بالایی در اجرای عملیات تراکنشی فراهم می‌کند. Spring MVC: فریمورک قدرتمند برای توسعه برنامه‌های وب مبتنی بر الگوی Model-View-Controller (MVC)، که جداسازی منطق تجاری، رابط کاربری، و کنترل‌کننده‌ها را تسهیل می‌کند. Spring Boot: ابزاری برای ساخت برنامه‌های مستقل و به‌سرعت قابل اجرا با حداقل پیکربندی، که به توسعه‌دهندگان اجازه می‌دهد به سرعت برنامه‌های جدید را راه‌اندازی و اجرا کنند. Spring Security: ارائه مجموعه‌ای از قابلیت‌های امنیتی برای حفاظت از برنامه‌ها در برابر تهدیدات مختلف مانند احراز هویت و مجوزدهی. Spring Cloud: مجموعه‌ای از ابزارها برای ساخت و استقرار میکروسرویس‌ها در محیط‌های ابری، شامل پشتیبانی از الگوهای طراحی متداول مانند کشف سرویس، پیکربندی متمرکز، و مدیریت پویای منابع. Spring با ارائه این مجموعه گسترده از ابزارها و کتابخانه‌ها، به توسعه‌دهندگان امکان می‌دهد تا برنامه‌های قدرتمند و قابل مقیاس‌پذیری را با استفاده از فناوری‌های جاوا ایجاد کنند. این فریمورک به دلیل انعطاف‌پذیری، قابلیت ادغام با سایر فناوری‌ها و اکوسیستم گسترده‌اش، یکی از محبوب‌ترین گزینه‌ها برای توسعه برنامه‌های کاربردی سازمانی و میکروسرویس‌ها است.

Spring Boot

Spring Boot یکی از پروژه‌های اصلی اکوسیستم Spring است که برای ساخت برنامه‌های مستقل و قابل اجرا با حداقل پیکربندی طراحی شده است. این فریمورک به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌های کاربردی سریع و ساده‌ای بسازند که به راحتی در محیط‌های تولید اجرا شوند. ویژگی‌های کلیدی Spring Boot شامل: راه‌اندازی سریع: Spring Boot با استفاده از وابستگی‌های از پیش پیکربندی شده و توابع خودکار، فرایند ایجاد یک پروژه جدید را به شدت ساده می‌کند. به جای نیاز به تنظیم دستی پیکربندی‌ها، بسیاری از کارها به صورت خودکار انجام می‌شوند. اجرای مستقل: برنامه‌های Spring Boot به عنوان فایل‌های اجرایی JAR یا WAR ساخته می‌شوند که شامل یک سرور داخلی (مانند Tomcat یا Jetty) هستند. این بدان معناست که برنامه می‌تواند به سادگی با اجرای یک دستور از خط فرمان اجرا شود. پیکربندی حداقلی: Spring Boot با فراهم کردن تنظیمات پیش‌فرض هوشمند، نیاز به پیکربندی پیچیده را کاهش می‌دهد. اگر نیاز به تغییر تنظیمات پیش‌فرض باشد، این کار به راحتی با استفاده از فایل‌های properties یا YAML قابل انجام است. مدیریت وابستگی‌ها: Spring Boot از Maven یا Gradle برای مدیریت وابستگی‌ها استفاده می‌کند و با تعریف “starter” های مختلف، مجموعه‌ای از وابستگی‌های متداول را به صورت یکجا فراهم می‌کند. این کار به توسعه‌دهندگان کمک می‌کند تا به سرعت وابستگی‌های لازم برای پروژه خود را اضافه کنند. نظارت و مدیریت: Spring Boot Actuator مجموعه‌ای از نقاط انتهایی (endpoints) را برای نظارت و مدیریت برنامه فراهم می‌کند. این نقاط انتهایی شامل اطلاعاتی درباره سلامت برنامه، معیارهای عملکرد، پیکربندی‌ها، و موارد دیگر می‌باشند. تست آسان: Spring Boot ابزارها و ویژگی‌هایی را برای تست خودکار برنامه‌ها فراهم می‌کند که از جمله می‌توان به پشتیبانی از تست واحد (unit testing) و تست‌های یکپارچگی (integration testing) اشاره کرد. اکوسیستم گسترده: Spring Boot به راحتی با سایر پروژه‌های Spring مانند Spring Data، Spring Security، Spring Cloud و بسیاری دیگر ادغام می‌شود، که به توسعه‌دهندگان امکان می‌دهد تا به سرعت ویژگی‌های پیشرفته را به برنامه‌های خود اضافه کنند. Spring Boot به دلیل سهولت استفاده، پیکربندی خودکار، و اکوسیستم قدرتمند خود به یکی از محبوب‌ترین فریمورک‌ها برای توسعه برنامه‌های کاربردی جاوا تبدیل شده است. این فریمورک به توسعه‌دهندگان کمک می‌کند تا تمرکز خود را بر روی منطق کسب‌وکار معطوف کنند و از پیچیدگی‌های فنی کاسته شود.

Micronaut

Micronaut یک فریمورک مدرن برای توسعه میکروسرویس‌ها و برنامه‌های سروری است که به طور خاص برای محیط‌های بومی ابری و کم‌حافظه طراحی شده است. این فریمورک که توسط شرکت Object Computing, Inc. (OCI) توسعه یافته، بر عملکرد بالا، راه‌اندازی سریع، و مصرف کم حافظه تمرکز دارد. ویژگی‌های کلیدی Micronaut شامل: کامپایل زمان ساخت: بر خلاف بسیاری از فریمورک‌های دیگر که از بازتاب (reflection) استفاده می‌کنند، Micronaut از کامپایل زمان ساخت برای پردازش وابستگی‌ها، پیکربندی‌ها، و جنبه‌های دیگر استفاده می‌کند. این روش باعث کاهش زمان راه‌اندازی و مصرف حافظه می‌شود. پیکربندی آسان: Micronaut دارای سیستم پیکربندی قدرتمند و انعطاف‌پذیری است که به توسعه‌دهندگان اجازه می‌دهد تا پیکربندی‌های پیچیده را به سادگی مدیریت کنند. این سیستم از فایل‌های properties، YAML، و حتی پیکربندی‌های محیطی پشتیبانی می‌کند. تزریق وابستگی: Micronaut از یک سیستم تزریق وابستگی (Dependency Injection) بهره می‌برد که به طور کامل در زمان کامپایل پردازش می‌شود. این به معنای عملکرد بهتر و استفاده کمتر از منابع سیستم است. راه‌اندازی سریع: به دلیل استفاده از پردازش زمان کامپایل، برنامه‌های Micronaut به سرعت راه‌اندازی می‌شوند، که این امر به خصوص در محیط‌های ابری و میکروسرویس‌ها بسیار مفید است. پشتیبانی از GraalVM: Micronaut به طور کامل با GraalVM سازگار است و می‌تواند به باینری‌های بومی (native images) تبدیل شود. این ویژگی منجر به بهبود قابل توجهی در زمان راه‌اندازی و کاهش مصرف حافظه می‌شود. پشتیبانی از واکنشی بودن: Micronaut از برنامه‌نویسی واکنشی (Reactive Programming) پشتیبانی می‌کند و به توسعه‌دهندگان اجازه می‌دهد تا برنامه‌های بسیار پاسخگو و مقیاس‌پذیر ایجاد کنند. اکوسیستم گسترده: Micronaut به طور یکپارچه با ابزارها و فریمورک‌های دیگری مانند Spring، Hibernate، و Netflix OSS ادغام می‌شود. همچنین پشتیبانی از بسیاری از کتابخانه‌ها و ابزارهای متداول برای توسعه میکروسرویس‌ها را فراهم می‌کند. امنیت: Micronaut دارای ماژول‌های امنیتی قدرتمندی است که از احراز هویت، مجوزدهی، و سایر ویژگی‌های امنیتی پیشرفته پشتیبانی می‌کند. Micronaut با توجه به این ویژگی‌ها، به توسعه‌دهندگان کمک می‌کند تا برنامه‌های میکروسرویس سریع، کارآمد، و مقیاس‌پذیری ایجاد کنند که به طور خاص برای محیط‌های مدرن ابری و منابع محدود طراحی شده‌اند. این فریمورک به عنوان یک گزینه محبوب برای توسعه‌دهندگانی که به دنبال عملکرد بالا و کاهش مصرف منابع هستند، به سرعت در حال جلب توجه است