QuickTime لجافا
QuickTime for Java أو QTJ هي مكتبة برمجية تُمكّن البرامج المكتوبة بلغة برمجة Java من توفير وظائف الوسائط المتعددة ، وذلك عن طريق استدعاء مكتبة QuickTime الأصلية . عمليًا، تُمكّن تطبيقات Java على أنظمة Mac OS و Mac OS X و Microsoft Windows من دعم التقاط وتحرير وتشغيل وتصدير العديد من تنسيقات الوسائط وبرامج الترميز المختلفة .
تم إيقاف دعم QTJ من قبل شركة Apple. [ 1 ]
تاريخ
في كتابه "أسرار أبل 2.0" ، أرجع أوين دبليو. لينزماير أصل برنامج QuickTime for Java إلى شركة Kaleida Labs ، وهي شركة منبثقة عن شركتي Apple Computer و IBM ، مشيرًا إلى أن هذا البرنامج وبعض فئات نصوص Unicode كانت البرامج الوحيدة لنظام Mac التي نجت من كارثة استمرت أربع سنوات وكلفتها 150 مليون دولار. [ 2 ] بعد نقله إلى نظام Mac OS، طُوّر البرنامج تحت الاسم الرمزي "Biscotti"، وأُصدر لأول مرة كنسخة تجريبية عامة في عام 1999. أُضيفت الإصدارات اللاحقة افتراضيًا مع نظامي Mac OS وMac OS X، وكانت جزءًا اختياريًا من تثبيت QuickTime لنظام Windows.
QTJ 6.1
في عام ٢٠٠٣، أصدرت آبل تطبيقًا لجافا ١.٤.١ تسبب في تعطل أي تطبيقات QTJ التي حاولت التشغيل على نظام ماك أو إس إكس باستخدام هذا الإصدار. يكمن السبب الرئيسي في انتقال آبل من كاربون إلى كوكوا لتطبيق AWT الخاص بها ، وإزالة مكتبة "JDirect" التي كانت تعتمد عليها QTJ لتحويل جافا إلى لغة أصلية. مع ذلك، كان بإمكان تطبيقات QTJ العمل على جافا ١.٣.١، لكن التطبيقات التي لم تحدد إصدار جافا المطلوب، أو التي احتاجت إلى ميزات الإصدار ١.٤، أصبحت غير قابلة للاستخدام.
في وقت لاحق من عام 2003، أصدرت آبل نسخة جديدة من QTJ عالجت مشكلات عدم التوافق، وذلك بتوفير نسخة متوافقة ولكن مُصغّرة من فئات واجهة المستخدم الرسومية. كما أحدثت هذه النسخة 6.1 من QTJ تغييرًا جذريًا في واجهة برمجة التطبيقات (API)، فبدلًا من أن يقوم المطورون بإنشاء مكونات واجهة المستخدم الرسومية وربطها Movieبعناصر قابلة للعرض، أصبح عليهم البدء من عنصر واجهة المستخدم الرسومية Movieوطلب مكون مناسب من المصنع. كما أغفلت النسخة الجديدة توفير مكون لعرض معاينة مرئية للمدخلات من جهاز التقاط، مثل كاميرا الويب أو كاميرا الفيديو . [ 3 ]
تصميم
تُضيف QTJ واجهة برمجة تطبيقات كائنية التوجه فوق مكتبة QuickTime الأصلية المبنية على لغة C. ويتم ذلك من خلال ربط structالعناصر المشتركة والوظائف التي تعمل معها في فئات. على سبيل المثال، Movieيُعدّ الهيكل أساس الفئة quicktime.std.movies.Movie، حيث تُصبح وظائف مثل NewMovieFromFileو GetMovieTrackCountدوالًا خاصة بالمثيل fromFile()و getTrackCount()على التوالي. والنتيجة هي واجهة برمجة تطبيقات كائنية التوجه حقيقية أكثر من غيرها من التعديلات من C إلى Java (مثل JOGL ، التي تُحوّل ملفات رأس OpenGL إلى فئات تحتوي على آلاف الدوال الثابتة). [ 4 ]
يُعد QTKit القائم على Cocoa محاولة مماثلة لوضع طبقة موجهة للكائنات فوق مكتبة QuickTime الإجرائية، باستخدام Objective-C .
يُخالف استخدام شركة آبل لاسم الحزمة الرئيسي quicktimeاتفاقية مواصفات لغة جافا التي تنص على استخدام الحزم لنظام أسماء نطاقات معكوس، مثل com.apple.quicktime. ومع ذلك، وبما أن آبل تمتلك العلامة التجارية "QuickTime"، فلا يوجد احتمال واقعي لحدوث تعارض في مساحات الأسماء ، وهو ما يهدف إليه نظام تسمية الحزم.
QTJ ليس تطبيقًا مكتوبًا بلغة جافا لبرنامج QuickTime، بل هو غلاف برمجي بلغة جافا يُستخدم لتشغيل استدعاءات QuickTime الأصلية. ولهذا السبب، لا يمكن تشغيله إلا على الأنظمة التي تحتوي على مكتبات QuickTime مثبتة، وهي أنظمة Mac OS الكلاسيكية (التي لم تعد مدعومة)، وMac OS X، وWindows.
سمات
يوفر برنامج QTJ إمكانية الوصول إلى معظم مكتبة QuickTime الأصلية، بما في ذلك
- تشغيل
- التحرير
- يأسر
- استيراد وتصدير الرسومات
- استيراد وتصدير الأفلام
- الوصول على مستوى العينة
باعتبارها غلافًا لبرنامج QuickTime، تدعم QTJ أيضًا مجموعة واسعة من تنسيقات الوسائط وبرامج الترميز، بما في ذلك MPEG-1 و MPEG-4 و H.264 و AAC و Sorenson Video و Flash و 3GPP و WAV و AIFF وغيرها. وبما أن QuickTime نفسه قابل للتوسيع، يمكن لـ QTJ إضافة دعم لتنسيقات مثل DivX و Ogg Vorbis باستخدام مكونات QuickTime خارجية .
مثال برمجي
يوضح المثال التالي مربع حوار اختيار ملف AWT ثم يحاول استيراد وتشغيل ملف الوسائط المحدد.
استيراد java.io.File ؛ استيراد java.awt.* ؛استيراد quicktime.* ; استيراد quicktime.std.movies.Movie ; استيراد quicktime.app.view.QTFactory ; استيراد quicktime.io.* ;public class TrivialQTJPlayer extends Frame {public static void main ( String [] args ) { try { QTSession . open (); Frame f = new TrivialQTJPlayer (); f . pack (); f . setVisible ( true ); } catch ( Exception e ) { e . printStackTrace (); } } public TrivialQTJPlayer () throws QTException { FileDialog fd = new FileDialog ( this , "TrivialJMFPlayer" , FileDialog . LOAD ); fd . setVisible ( true ); File f = new File ( fd . getDirectory (), fd . getFile ()); OpenMovieFile omf = OpenMovieFile . asRead ( new QTFile ( f )); Movie m = Movie . fromFile ( omf ); Component c = QTFactory . makeQTComponent ( m ). asComponent (); add ( c ); m.start ( ) ; } }معظم الكود في هذا المثال يتعلق بإعداد واجهة المستخدم الرسومية. الاستدعاءات الوحيدة لـ QTJ هي استدعاءات ` OpenMovieFile.asRead()and` Movie.fromFile()، التي تُنشئ فيلم QuickTime من الملف المُحدد، واستدعاءات `create` لإنشاء مُكوّن AWT من ` QTFactory. يضع هذا المثال الفيلم في الإطار ويبدأ تشغيله فورًا؛ إذا كنت ترغب في شريط تحكم (يُعرف أيضًا باسم "شريط التمرير")، فستُنشئ ` MovieControllerمن ` Movie، ثم تُنشئ مُكوّنًا من وحدة التحكم، بدلًا من إنشاء مُكوّن من الفيلم.
الوضع والتوقعات
يُحدّ من انتشار QTJ طبيعته كغلاف لمكتبة QuickTime الخاصة بشركة Apple. فهو غير متوفر لأي منصة أخرى غير Mac وWindows، ولن يكون متوفرًا إلا إذا قامت Apple بنقل QuickTime إلى منصة أخرى، مثل Linux.
حالياً، لا تعمل معظم وظائف QTJ على أجهزة الكمبيوتر الحديثة التي تعمل بنظام ويندوز. لا تستطيع أجهزة ويندوز التي تستخدم ميزة حماية الصفحات "عدم التنفيذ" (NX) في المعالجات الحديثة تشغيل حتى العروض التوضيحية دون تغيير الإعدادات. يمكن للمطور التحقق من ذلك بسهولة عن طريق تشغيل تجريبي لأحد العروض التوضيحية المرفقة مع QTJ. سيتم الإبلاغ عن "انتهاك حماية التنفيذ" وسيقوم ويندوز بإيقاف البرنامج. هذا يجعل QTJ غير مناسب لتطوير تطبيقات المستخدم النهائي نظراً لتعقيد إعدادات ميزة NX.
بعد إصدار QTJ 6.1 عام 2003، لم تُجرِ Apple سوى تحديثات قليلة على QTJ، واقتصرت معظمها على إصلاح الأخطاء. والجدير بالذكر أن QuickTime 7 كان أول إصدار من QuickTime لا يُصاحبه أو يتبعه إصدار QTJ يدعم واجهات برمجة التطبيقات الأصلية الجديدة. فواجهات برمجة التطبيقات الجديدة في QuickTime 7، مثل تلك الخاصة بالتعامل مع البيانات الوصفية وبرامج ترميز إعادة ترتيب الإطارات، غير متاحة لمبرمجي QTJ. كما لم تُقدم Apple فئات جديدة لتوفير وظيفة معاينة الالتقاط التي كانت موجودة في إصدارات QTJ السابقة لـ 6.1. في الواقع، يعتمد QTJ على بعض واجهات برمجة التطبيقات الأصلية التي لم تعد Apple توصي بها، وأبرزها QuickDraw .
انظر أيضاً
- إطار عمل جافا للوسائط
- Xuggler ، واجهة برمجة تطبيقات جافا لترميز وفك ترميز الفيديو، تعمل على أنظمة ماك ولينكس وويندوز.
روابط خارجية
- برنامج QuickTime للغة Java على منصة Apple Developer Connection
مراجع
- كويك تايم
- واجهات برمجة تطبيقات جافا
