المنوع هو البرنامج المساعد للمترجم جافا. استخدمه لتكملة مشاريع Java الخاصة بك بميزات عالية الإنتاجية.
تعمل البرمجة الفوقية المتقدمة لوقت الترجمة على دمج أي نوع من البيانات أو البيانات الوصفية أو DSL بأمان في Java مباشرةً.
تعمل التحسينات اللغوية القوية على تحسين إنتاجية المطورين بشكل كبير.
كل ميزة متاحة كتبعية منفصلة. ما عليك سوى إضافة التبعيات المتعددة التي تختارها إلى مشروعك الحالي والبدء في الاستفادة منها.
جميعها مدعومة بالكامل في إصدارات JDK LTS 8 - 21 + الأحدث مع دعم IDE الشامل في IntelliJ IDEA و Android Studio .
ما هو الجديد...
SQL آمن للنوع
يتيح لك Manifold SQL كتابة لغة SQL الأصلية مباشرة وأمان الكتابة في كود Java الخاص بك.
- تتوفر أنواع الاستعلام على الفور أثناء كتابة لغة SQL الأصلية بأي تعقيد في كود Java الخاص بك
- يتم اشتقاق أنواع المخططات تلقائيًا من قاعدة بياناتك، مما يوفر نوع CRUD الآمن وTX المنفصل والمزيد
- لا توجد خطوات إنشاء ORM، ولا DSL، ولا أسلاك، ولا توجد خطوات إنشاء التعليمات البرمجية
أخذ عينات من الشركات التي تستخدم المنوع:
استخدم إطار العمل للحصول على وصول مباشر وآمن إلى أي نوع من الموارد، مثل SQL و JSON و GraphQL و XML و YAML و CSV وحتى اللغات الأخرى مثل JavaScript . قم بإزالة خطوة إنشاء الكود في عملية الإنشاء الخاصة بك. ◀ التحقق من ذلك!
SQL: استخدم SQL الأصلي بأي تعقيد مباشرةً واكتب بأمان من Java.
Language english =
"[.sql/]select * from Language where name = 'English'" . fetchOne ();
Film film = Film . builder ( "My Movie" , english )
. withDescription ( "Nice movie" )
. withReleaseYear ( 2023 )
. build ();
MyDatabase . commit ();
GraphQL: استخدم الأنواع المحددة في ملفات .graphql مباشرةً ، بدون خطوات إنشاء التعليمات البرمجية! قم بإجراء تغييرات GraphQL واستخدمها فورًا مع إكمال التعليمات البرمجية.
var query = MovieQuery . builder ( Action ). build ();
var result = query . request ( "http://com.example/graphql" ). post ();
var actionMovies = result . getMovies ();
for ( var movie : actionMovies ) {
out . println (
"Title: " + movie . getTitle () + " n " +
"Genre: " + movie . getGenre () + " n " +
"Year: " + movie . getReleaseDate (). getYear () + " n " );
}
JSON: استخدم ملفات مخطط .json مباشرة وأمان، دون الحاجة إلى خطوات لإنشاء التعليمات البرمجية! ابحث عن استخدامات خصائص .json في كود Java الخاص بك.
// From User.json
User user = User . builder ( "myid" , "mypassword" , "Scott" )
. withGender ( male )
. withDob ( LocalDate . of ( 1987 , 6 , 15 ))
. build ();
User . request ( "http://api.example.com/users" ). postOne ( user );
أضف أساليبك الخاصة إلى فئات Java الموجودة، حتى String و List و File . إزالة التعليمات البرمجية المعيارية. ◀ التحقق من ذلك!
String greeting = "hello" ;
greeting . myMethod (); // Add your own methods to String!
تفضيل التركيب على الميراث. استخدم @link
و @part
لإعادة توجيه تنفيذ الواجهة تلقائيًا والتفويض الحقيقي .
class MyClass implements MyInterface { @ link MyInterface myInterface ; // transfers calls on MyInterface to myInterface public MyClass ( MyInterface myInterface ) { this . myInterface = myInterface ; // dynamically configure behavior } // No need to implement MyInterface here, but you can override myInterface as needed }
تخلص من التعليمات البرمجية النموذجية/المحددة، وقم بتحسين تجربة التطوير الشاملة الخاصة بك مع الخصائص.
public interface Book {
@ var String title ; // no more boilerplate code!
}
// refer to it directly by name
book . title = "Daisy" ; // calls setter
String name = book . title ; // calls getter
book . title += " chain" ; // calls getter & setter
بالإضافة إلى ذلك، تستنتج الميزة تلقائيًا الخصائص، سواء من ملفات المصدر الموجودة لديك أو من الفئات المترجمة التي يستخدمها مشروعك. تقليل استخدام الممتلكات من هذا:
Actor person = result . getMovie (). getLeadingRole (). getActor ();
Likes likes = person . getLikes ();
likes . setCount ( likes . getCount () + 1 );
إلى هذا:
result . movie . leadingRole . actor . likes . count ++;
قم بتنفيذ طرق التشغيل على أي نوع لدعم العوامل الحسابية والعلائقية والفهرسية والوحدات بشكل مباشر.
// BigDecimal expressions
if ( bigDec1 > bigDec2 ) {
BigDecimal result = bigDec1 + bigDec2 ;
...
}
// Implement operators for any type
MyType value = myType1 + myType2 ;
توفر تعبيرات Tuple بناء جملة موجزًا لتجميع عناصر البيانات المسماة في بنية خفيفة الوزن.
var t = ( name : "Bob" , age : "35" );
System . out . println ( "Name: " + t . name + " Age: " + t . age );
var t = ( person . name , person . age );
System . out . println (" Name : " + t . name + " Age : " + t . age );
يمكنك أيضًا استخدام الصفوف مع استدلال النوع auto
الجديد لتمكين قيم الإرجاع المتعددة من إحدى الطرق.
تعد عمليات الوحدة أو الربط فريدة بالنسبة لإطار العمل المنوع. أنها توفر بناء جملة موجزة وقوية ويمكن تطبيقها على مجموعة واسعة من التطبيقات.
import static manifold . science . util . UnitConstants .*; // kg, m, s, ft, etc
...
Length distance = 100 mph * 3 hr ;
Force f = 5.2 kg m / s / s ; // same as 5.2 N
Mass infant = 9 lb + 8.71 oz ;
يمكنك العمل بسهولة مع Range API باستخدام تعبيرات الوحدة. ما عليك سوى استيراد ثوابت RangeFun لإنشاء النطاقات.
// imports the `to`, `step`, and other "binding" constants
import static manifold . collections . api . range . RangeFun .*;
...
for ( int i : 1 to 5 ) {
out . println ( i );
}
for ( Mass m : 0 kg to 10 kg step 22 r unit g ) {
out . println ( m );
}
استخدم إطار العلوم المتعددة لدمج الوحدات والقياسات الدقيقة بأمان في تطبيقاتك.
import static manifold . science . util . UnitConstants .*; // kg, m, s, ft, etc.
...
Velocity rate = 65 mph ;
Time time = 1 min + 3.7 sec ;
Length distance = rate * time ;
استخدم التوجيهات المألوفة مثل #define و #if لتجميع مشاريع Java الخاصة بك بشكل مشروط. يوفر المعالج المسبق طريقة بسيطة ومريحة لدعم أهداف البناء المتعددة بقاعدة تعليمات برمجية واحدة. ◀ التحقق من ذلك!
# if JAVA_8_OR_LATER
@ Override
public void setTime ( LocalDateTime time ) {...}
# else
@ Override
public void setTime ( Calendar time ) {...}
# endif
توحيد واجهات برمجة التطبيقات المتباينة. مكونات برنامج Bridge التي لا تتحكم فيها. الوصول إلى الخرائط من خلال واجهات آمنة من النوع. ◀ التحقق من ذلك!
Map < String , Object > map = new HashMap <>();
MyThingInterface thing = ( MyThingInterface ) map ; // O_o
thing . setFoo ( new Foo ());
Foo foo = thing . getFoo ();
out . println ( thing . getClass ()); // prints "java.util.HashMap"
يمكنك الوصول إلى الميزات الخاصة باستخدام @Jailbreak لتجنب الكدح والضعف الناتج عن انعكاس Java. ◀ التحقق من ذلك!
@ Jailbreak Foo foo = new Foo ();
// Direct, *type-safe* access to *all* foo's members
foo . privateMethod ( x , y , z );
foo . privateField = value ;
لديك الآن خيار جعل الاستثناءات المحددة تتصرف مثل الاستثناءات غير المحددة! لا مزيد من البلع استثناء غير مقصود. لا مزيد من المحاولة / الالتقاط / اللف / إعادة الرمي!
List < String > strings = ...;
List < URL > urls = strings . stream ()
. map ( URL :: new ) // No need to handle the MalformedURLException!
. collect ( Collectors . toList ());
المتغيرات والتعبيرات المضمنة في سلسلة حرفية، لا مزيد من سلسلة مترابطة! ◀ التحقق من ذلك!
int hour = 15 ;
// Simple variable access with '$'
String result = "The hour is $hour" ; // Yes!!!
// Use expressions with '${}'
result = "It is ${hour > 12 ? hour-12 : hour} o'clock" ;
قم بتأليف ملفات القوالب مع القوة التعبيرية الكاملة لـ Java، واستخدم قوالبك مباشرة في التعليمات البرمجية الخاصة بك كأنواع. يدعم التضمين الآمن للقوالب الأخرى والتخطيطات المشتركة والمزيد. ◀ التحقق من ذلك!
List < User > users = ...;
String content = abc . example . UserSample . render ( users );
ملف القالب abc/example/UserSample.html.mtl
< %@ import java.util.List % >
< %@ import com.example.User % >
< %@ params(List < User > users) % >
< html lang =" en " >
< body >
< % for(User user: users) { % >
< % if(user.getDateOfBirth() != null) { % >
User: ${user.getName()} < br >
DOB: ${user.getDateOfBirth()} < br >
< % } % >
< % } % >
</ body >
</ html >
استخدم البرنامج الإضافي Manifold للاستفادة الكاملة من Manifold مع IntelliJ IDEA و Android Studio . يوفر البرنامج المساعد دعمًا شاملاً لـ Manifold بما في ذلك إكمال التعليمات البرمجية، والتنقل، والبحث عن الاستخدام، وإعادة البناء، والتجميع التزايدي، وتصحيح أخطاء hotswap، وتحرير القالب كامل الميزات، والمعالج المسبق المتكامل، والمزيد.
احصل على البرنامج المساعد من JetBrains Marketplace
يتكون مشروع المنوع من إطار المشعب الأساسي ومجموعة من المشاريع الفرعية التي تنفذ مؤشرات الأداء التي يوفرها الإطار الأساسي. يتكون كل مشروع من تبعيات واحدة أو أكثر يمكنك إضافتها بسهولة إلى مشروعك:
المنوع : النواة
المشعب : الامتدادات
المنوع : التفويض
المنوع: الخصائص
متعددة : الصفوف
المنوع: SQL
المنوع: GraphQL
المنوع: JSON
المنوع: XML
المنوع: YAML
المنوع: CSV
المنوع: ملفات الملكية
متعددة : صورة
المنوع: جافا المظلمة
المنوع: جافا سكريبت
المنوع: قوالب جافا
المنوع: سلسلة الاستيفاء
المنوع: (Un) الاستثناءات المحددة
المنوع: المعالج المسبق
متعددة: العلم
المنوع: المجموعات
المنوع: I/0
المنوع: النص
تجربة مع نماذج المشاريع:
- المنوع: نموذج التطبيق
- المنوع: نموذج لتطبيق SQL
- المنوع: نموذج لتطبيق GraphQL
- المنوع: نموذج لتطبيق REST API
- المنوع: نموذج لتطبيق ويب
- المنوع: مشروع مثال Gradle
- المنوع: نموذج لتطبيق Kotlin
يدعم المنوع:
يتوفر أيضًا دعم IDE الشامل لـ IntelliJ IDEA وAndroid Studio.
انضم إلى خادم Discord الخاص بنا لبدء مناقشة وطرح الأسئلة وتقديم التعليقات وما إلى ذلك. عادةً ما يكون هناك شخص ما للمساعدة.