IntelliJ IDEA 2019.3: تحسين الأداء وتحسين الجودة

تحية!

في هذا الإصدار ، ركزنا على الأداء والجودة. بالتعاون مع فرق JetBrains الأخرى ، شاركنا في تحسين الأداء وزيادة استجابة الواجهة وتحسين الوظائف الحالية.

لتحديد الأولويات بشكل صحيح ، اعتمدنا على تعليقاتك ونشكر كل من شارك الأفكار وأبلغ عن الأخطاء في متتبعنا. ونتيجة لذلك ، قمنا بإصلاح أكثر من 1600 مشكلة ، والتي تلقينا في مجموعها حوالي 4000 صوت مستخدم.

لقد عملنا أيضًا على دعم أطر عمل خدمات microservices جديدة مثل Micronaut و Quarkus و Helidon ، وقدمنا الدعم الذي طال انتظاره لـ MongoDB .


blog @ 2x (3)




تحسين الأداء


لقد عملنا بجد لتحسين أداء IntelliJ IDEA. إليك ما حصلنا عليه:


  • يبدأ IntelliJ IDEA بشكل أسرع.
  • أقل محرر واجهة يتجمد.
  • يستهلك IDE ذاكرة أقل ، خاصة عند استيراد مشاريع Gradle .




واحدة من المهام الرئيسية لهذا العام كانت لتقليل وقت إطلاق IDE. لقد أجرينا تغييرات معمارية مهمة على منصة IntelliJ: بعض العمليات التي حدثت بالتتابع عند بدء التشغيل تعمل الآن بشكل متوازٍ. بالإضافة إلى ذلك ، قمنا بإعادة تنظيم الفصول لتسريع التهيئة وتحسين تنزيل الخطوط على نظام التشغيل MacOS والمزيد.


لقد اهتمنا بزيادة استجابة الواجهة وتخلصنا من العديد من التجمدات في أجزاء مختلفة من IntelliJ IDEA. لقد نجحنا في القضاء على أسباب التجميد من أكثر من 1600 تقرير خطأ. بالإضافة إلى ذلك ، أصبح الإبلاغ عن التجميد أسهل الآن.


يعمل IntelliJ IDEA الآن بشكل أسرع عندما تكون العديد من علامات التبويب مفتوحة في المحرر أو المصحح ، وكذلك عندما يتطابق التعبير العادي مع السطور الطويلة جدًا في Find in Path . يستغرق فتح شجرة المشروع أيضًا وقتًا أقل.


لقد قمنا بتسريع عمل المحرر من خلال تحسين الاستدلال النوعي في Java. استنتاج الكتابة لسلاسل طويلة من استدعاءات الطريقة أصبح الآن أسرع بكثير. يعمل تمييز بناء جملة Java أيضًا بشكل أسرع ، خاصةً مع أساليب varargs العامة ( Arrays.asList ، Map.ofEntries ، وما إلى ذلك) ، والتي يمكن أن تحتوي على عشرات الوسائط. تسارعت أيضًا عملية ربط الأسطر المتعددة مع إجراءات الانضمام إلى الخطوط .


أدى دعم Kotlin 1.3.60 أيضًا إلى تحسينات ، على سبيل المثال ، تسريع تسليط الضوء على بناء جملة Kotlin في المحرر.


أثرت التصحيحات الأخرى على VCS: لقد نجحوا في تقليل وقت معالجة الأحداث وتجاهل الملفات ، والقضاء على التجميد وتسريع تحديثات الحالة في المشاريع الكبيرة.


في النظام الفرعي للبناء ، قمنا بتقليل استهلاك الذروة للذاكرة عند استيراد مشاريع Gradle الكبيرة. لقد أصلحنا أيضًا مشاكل في تحرير ملفات pom.xml في مشاريع Maven: الآن IDE يقدم خيارات الإكمال التلقائي دون تأخير.


نحن سعداء بالنتائج ، لكن لا تتوقف عند هذا الحد. في الإصدارات المستقبلية ، سنستمر في تحسين الأداء ومحاولة جعل تشغيل IDE أسرع.



تحسين الجودة


الإضافات

يحتوي IntelliJ IDEA على نظام بيئي غني من المكونات الإضافية ، ولكن هناك عيبًا: عند تثبيت أو إزالة مكون إضافي ، تحتاج إلى إعادة تشغيل IDE. بدأنا في حل هذه المشكلة وقمنا بتنفيذ البنية التحتية الأساسية للتثبيت الديناميكي للمكونات الإضافية ، دون إعادة تشغيل IDE. حتى الآن ، يعمل هذا فقط مع سمات الواجهة واختصارات لوحة المفاتيح.


أنظمة التحكم في الإصدار

الكثير من جديد في دعم VCS. لتبسيط العمل مع الفروع ، بدلاً من إجراء Checkout كـ ... ، أضفنا فرعين جديدين: Checkout و New Branch from Selected . ينشئ الفرع الجديد من الإجراء المحدد فرعًا محليًا جديدًا ، لكنه لا يتيح تتبع أي فرع بعيد. عندما يتم استدعاء إجراء Checkout ، يقوم IDE بإنشاء فرع محلي جديد ، ويسترده من المستودع ، ويمكّن تتبع الفرع البعيد المحدد إذا لم يكن هناك فرع محلي بنفس الاسم.





لقد قمنا بإعادة تصميم مربع حوار Clone وصنعنا واجهة واحدة لتنزيل المشاريع من مختلف استضافة VCS. يمكنك الآن إدخال حسابك مباشرة من مربع الحوار المحدث. إذا قمت بتسجيل الدخول بالفعل ، فسوف يعرض IDE قوائم بجميع المستودعات التي تم تجميعها حسب الحساب أو المؤسسة التي أنت عضو فيها.


بالإضافة إلى ذلك ، لم تعد بحاجة إلى تنزيل فرع لإرسال التغييرات إلى المستودع: حدد الفرع المطلوب في نافذة الفروع وانقر فوق ادفع . بالنسبة للملفات المنقولة أو التي تمت إعادة تسميتها ، أضفنا عمودًا به أسماء الملفات إلى "محفوظات الملفات" . تحسين آخر مفيد هو القدرة على فرض ملف لإضافته إلى Git (أو Mercurial) ، حتى لو كان في قائمة .gitignore (أو .hgignore).


تحسينات أخرى

في الإصدار السابق ، دعمنا وظائف Java 13 ، وحسنا هذه المرة بشكل كبير دعم كتل Java 13. لقد تحدثنا مؤخرًا عن ذلك في مدونتنا .


الآن هناك طريقة سهلة لعرض التسلسل الهرمي للمكالمات للحقل المحدد: استخدم إجراء التسلسل الهرمي للمكالمات الجديدة ( Ctrl / Cmd + Alt + H ).


إذا كان لديك خانة الاختيار " إظهار الوثائق السريعة على تحريك الماوس" محددة ، عند تحريك الماوس فوق تحذير أو خطأ ، فسيتم عرض تلميح واحد مع وصف للتحذير أو الخطأ ومساعدة المعلومات حول الرمز.
في السابق ، في مثل هذه الحالات ، أظهر IDE تلميحًا للخطأ فقط بدون وثائق ، وأحيانًا يظهر نافذان منبثقان بالكامل.


لقد قمنا بتحديث سلوك مربع حوار إجراءات النية : لن تختفي الإجراءات من قائمة الجمل إذا قمت بتحديد واحدة منها وأغلقت مربع الحوار.


يتم الآن عرض نافذة الخدمات دائمًا ، ويمكن تكوين سلوكها داخل النافذة نفسها. بالإضافة إلى ذلك ، يمكنك إخفاء بعض تكوينات بدء التشغيل.


وأيضا:


- أصبحت تلميحات حول عدم تطابق النوع أكثر تفصيلاً ومفهومة.
- عند فتح مشروع ، يعرض IntelliJ IDEA اسمه.
- لقد أيدنا إدراج أجزاء التعليمات البرمجية في لغات القوالب الجديدة ، ولا سيما Pug ( Jade سابقًا) و Handlebars و EJS و Slim .
- كان هناك التمرير السلس مع عجلة الماوس.
- يمكن جعل أشرطة التمرير أكثر وضوحًا باستخدام خانة الاختيار استخدام أشرطة تمرير التباين في التفضيلات / الإعدادات | المظهر والسلوك | المظهر .

دعم الأطر والتقنيات الجديدة


على الرغم من أننا في إعداد هذا الإصدار ركزنا أساسًا على الجودة ، فقد عملنا أيضًا على العديد من الميزات الجديدة ويسرنا تقديمها. كل ما هو موضح أدناه متاح فقط في IntelliJ IDEA Ultimate.


كان هناك الكثير من المحادثات حول الخدمات المصغرة قبل وقت طويل من بدء التخطيط لهذا الإصدار. في مرحلة ما ، كنا نظن أنه يجب علينا إضافة دعم للتقنيات المستخدمة لتطوير مشاريع Java و Kotlin مع بنية الخدمة الصغيرة. تجمعت النجوم وبدأنا العمل على التكامل.


أولاً ، قمنا بتوسيع قدراتنا على المساعدة في كتابة التعليمات البرمجية وإمكانية التنقل لأطر تطوير الخدمات المصغرة من الجيل التالي: Micronaut و Quarkus و Helidon. بالنسبة لأولئك المشاركين في البرمجة التفاعلية ، أضفنا دعمًا لـ Spring Web Flux.




تتواصل Microservices عادة مع بعضها البعض عبر HTTP / WebSocket ، لذلك كانت الخطوة التالية بالنسبة لنا هي إضافة دعم لواجهة برمجة تطبيقات Java API لعملاء Java ، مثل java.net.URI / URL ، Retrofit v2 ، OkHttp v3 ، بالإضافة إلى مكتبات العملاء الخاصة بأطر عمل الخادم الشائعة: Spring Feign ، عميل MicroProfile REST ، إلخ. الأهم من ذلك ، أن IDE يوفر الآن إكمال عنوان URL والتنقل لـ HTTP / WebSocket API.


ثانياً ، لقد أضفنا نافذة جديدة لنقاط النهاية لجعلها ملائمة لعرض نقاط النهاية في مشروعك. تعرض هذه النافذة كلاً من واجهات برمجة تطبيقات العميل والخادم. تدريجيا ، لن تتم إضافة HTTP API فقط هنا ، ولكن أيضًا واجهة برمجة تطبيقات المراسلة و gRPC و GraphQL.


أخيرًا ، قمنا بتوسيع دعم مواصفات API. في هذا الإصدار ، دعمنا Swagger 2 و OpenAPI Specification 3. ويشمل الدعم التحقق من الامتثال للنظام ، والإكمال التلقائي ، والتنقل ، والبحث عن الاستخدامات وإعادة التسمية في إعادة تسمية ملفات YAML / JSON التي تحتوي على أوصاف API.


في الوقت الحالي ، كل هذا يعمل فقط لمشاريع في Java و Kotlin ، ولكن في الإصدارات المستقبلية نخطط لدعم اللغات والأطر الأخرى.


بالإضافة إلى ذلك ، يدعم IntelliJ IDEA 2019.3 أخيرًا MongoDB. في هذا الإصدار ، يتم عرض المجموعات والحقول في مستكشف قاعدة البيانات ، ويمكنك تنفيذ الاستعلامات وعرض نتائجها.



إصلاحات مهمة


- يعثر IDE الآن على الدليل الذي تم تثبيت Gradle من خلال Homebrew.
- أصبح من السهل تعيين دليل Gradle الرئيسي يدويًا.
- يدعم IntelliJ IDEA الآن تخزين كلمة المرور في KWallet على Linux.
- بالنسبة لمشاريع JavaFX ، يمكن لـ IDE عرض ملف FXML باستخدام Scene Builder المدمج في علامة التبويب Scene Builder .
- في نافذة التصحيح ، يعمل التنقل عبر لوحة المفاتيح.
- يمكنك نسخ النص المحدد من نافذة الفحص عبر Ctrl / Cmd + C.
- لا يتم فقد التركيز عند التبديل بين نوافذ IDE.
- تحسين موقع النوافذ وتلميحات الأدوات.
- إذا تم تحديد سمة Darcula في IDE ، يتم فتح نوافذ نظام MacOS في سمة مظلمة عند الاتصال.

قمنا أيضًا بتحديث JetBrains Runtime 11 (JBR 11).


- تقديم الخطوط الثابتة على نظام التشغيل MacOS Catalina.
- تم إصلاح مشكلة في فتح مشروع على نظام التشغيل macOS 10.15 Catalina.
- الحروف الثابتة في مربع الحوار " تقييم التعبير" .
- ستكتشف IntelliJ IDEA التعارضات بين اختصارات لوحة المفاتيح IDE واختصارات نظام التشغيل.
- المحرر حل مشكلة الخطوط التي كانت دائما مائلة .
- إصلاح الشاشة الأولية على ويندوز.

اقرأ جميع التفاصيل حول الإصدار الجديد على الموقع الإلكتروني أو راجع المراجعة (باللغة الإنجليزية).

فريق JetBrains

Source: https://habr.com/ru/post/ar479902/


All Articles