إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

البرمجة باستخدام جافا داخل برامج بيرل (دمج اللغتين)

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • [شرح] البرمجة باستخدام جافا داخل برامج بيرل (دمج اللغتين)

    بسم الله الرحمن الرحيم


    ربما تحب ان تكتب برامجك ببيرل و لكن تريد استخدام الواجهة الرسومية سوينج الخاصة بجافا ؟
    ربما تحب ان تكتب الكلاسات بطريقة جافا و من ثم تستخدمهم كأنهم كائنات بيرل؟
    ربما تحب ان تستخدم بعض المكتبات الموجودة في جافا ؟
    ربما مشروعك يحتاج لقوة جافا و بيرل معا ؟
    لهذه او لاسباب عديدة اخرى هناك امكانية دمج البرمجة بواسطة جافا داخل اكواد بيرل و ذلك باستخدام Inline::Java ..


    اولا خطوات التنصيب :
    عملية التنصيب ليست صعبة و لكن مختلفة عن طريقة تنصيب بقية الموجلات البيرلاوية !..
    طبعا الخطوة الاولى ان يكون الجهاز يحتوي على اللغتين و من ثم تنصيب انلاين و بعدها تنزيل انلاين جافا ثم فك الضغط ثم اضافة عنوان جافا SDK لملف البناء … باختصار :


    1- جافا و بيرل
    2- cpan Inline
    3- download Inline::Java
    4- Extract
    5-perl Makefile.PL J2SDK=/usr/lib/jvm/java-6-sun
    6- make
    7- make install


    الان نحن جاهزون لاستخدام جافا في برامج بيرل مثال بسيط :
    سنقوم بانشاء كائن جديد باستخدام بيرل و لكن سنكتب الكائن باستخدام جافا …


    كود PHP:

       
    #!/usr/bin/perl
        
    use strict;
        use 
    Inline Java => "DATA";
         
    # create a triangle object
       
    my $triangle RightAngledTriangle->new(3,4);
       print 
    "The hypotenuse is " $triangle->get_hypotenuse "\n";
        
        
    __DATA__
       __Java__
       import java
    .lang.Math;
       public class 
    RightAngledTriangle
       
    {
         
    double aj;
         
    double op;
         
    // the constructor (i.e. 'new')
         
    public RightAngledTriangle(double ajdouble op)
         {
           
    this.aj aj;
           
    this.op op;
         }
         public 
    double get_adjacent()
         {
           return 
    aj;
         }
         public 
    double get_opposite()
         {
           return 
    op;
         }
         public 
    double get_hypotenuse()
         {
           return 
    Math.sqrt(
             
    Math.pow(aj,2) +
             
    Math.pow(op,2)
           );
         }
       } 
    مثال اكثر تقدما استخدام سوينج في برامج بيرل :
    لاحظ الاختلاف هنا في ان كلاس بود بوتن يرث كلاس InlineJavaPerlCaller
    و اما البقية فهي ليست غريبة بتاتا على مبرمجي جافا و بيرل ..
    كود PHP:
                                      #!/usr/bin/perl
      
    use strict;
     

     

      use 
    Inline Java => <<'END' ;
           
    import java.util.* ;
           
    import org.perl.inline.java.* ;
           
    import javax.swing.* ;
           
    import java.awt.event.* ;
     

           class 
    Pod_Button extends InlineJavaPerlCaller
                            
    implements ActionListener {
              
    JFrame frame null ;
     

              public 
    Pod_Button() throws InlineJavaException {
                 
    frame = new JFrame("Pod_Button") ;
                 
    frame.setSize(100,100) ;
                 
    JButton button = new JButton("Click Me!") ;
                 
    frame.getContentPane().add(button) ;
                 
    button.addActionListener(this) ;
                 
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE) ;  
                 
    frame.show() ;
              }
     

              public 
    void actionPerformed(ActionEvent e){
                 try {
                    
    CallPerlSub("main::button_pressed", new Object [] {}) ;
                 }
                 catch (
    InlineJavaPerlException pe){
                    
    // [email protected] is in pe.GetObject()
                 
    }
                 catch (
    InlineJavaException pe) {
                    
    pe.printStackTrace() ;
                 }
              }
     

              public 
    void close(){
                 
    frame.dispose() ;
                 
    frame.hide() ;
                 
    frame null ;
              }
     

              public 
    void quit(){
                 
    System.exit(0) ;
              }
           }
     
    END
     

        my $b 
    = new Pod_Button() ;
        
    $b->StartCallbackLoop() ;
        
    $b->close() ;
     

        
    # Maybe do some other stuff
     

        
    exit() ;      # in client-server mode, optional
        
    $b->quit() ;  # in JNI mode
     

        
    sub button_pressed {
           print(
    'click!' "\n") ; # prints click!
           
    $b->StopCallbackLoop() ;
        } 
    صفحة التوثيق الرئيسية :
    http://search.cpan.org/~patl/Inline-Java-0.52/Java.pod
    Static files
    alyassen.github.io
يعمل...
X