# فناوری جاوا > برنامه‌نویسی جاوا > سوال: شروع یک IDE اپن سورس

## hotice

سلام
_پیش نویس: من خودم مدتهاست که با جاوا کارمیکنم و IDE هایی نظیر Jdeveloper,websphier,... و در آخر Netbeas که دورادور با توسعه دهندگانش همکاری داشتم(دارم).
چند روزی هست که به پیشنهاد یکی از دوستان میخواهم یک پروژه opensource رو شروع کنم که یک IDE هست.
چرا IDE : با نگاه به یک IDE خوب متوجه میشوید که متشکل شده از ابزارهایی برای پیادی سازی تکنولژی های بکار رفته در یک زبان (البته مطمئناَ نه بطور واضح). خیلی از ide ها ابتدا شاید یک ادیتور ساده بیش نبوده که به مرور زمان به یک IDE قدرتمند تیدیل شده. خوب بگذریم.
_
خیلی وقته که من گه گاهی به این فروم سر میزنم ولی شور شوقی در بین کاربران اون نمیبینم( در مقایسه با فروم های دیگه) خیلی دوست داشتم بین دوست داران جاوا هم یک چنین شور و شوقی برقرار باشه.
فکری که به ذهنم رسید ایجاد یک IDE بود البته از نوع opensourceش . برای اینکار نیازی به دانش خاص برنامه نویسی نیست . دوستان میتونن برای مستند سازی هم همکاری کنند.


نظرات دوستان میتونه در راهبرد پروژه موثر باشه.

در ادامه در باره روند پروژه بیشتر مینویسیم

بی نوشت1: اگه غلت املایی دیدین زیاد اشکال نگیرین چون با عجله نوشتم.

----------


## saeed_Z_F

سلام
موافقم که توی قسمت جاوا شور و شوق زیادی وجود نداره ولی در مورد هدفتون از تولید یک IDE اپن سورس چیز زیادی متوجه نشدم اگه ممکنه در مورد هدفتون از این کار کمی توضیح بدین شاید من هم پایه شدم .
مثلا هدف IBM از تولید Eclipse داشتن یک چارچوب قوی برای ارائه محصولات نرم افزاریش برروی اونه یا هدف بنیانگذاران Netbeans انجام یک پروژه دانشجویی و کسب تجربه و ارائه توانایی های خود به شرکت های بزرگ (که در نهایت هم منجر به خرید Netbeans توسط سان شد) یا هدف اراکل از توسعه JDeveloper تولید یک ابزار برای فروش بیشتر سایر محصولات نرم افزاری (مانند : Oracle DB و یا Oracle ADF) خود است .
به نظر من هیچ پروژه نرم افزاری موفق در دنیا بدون هدف نبوده (یا برای سرگرمی) و این نشون میده هدف خیلی مهمه .

----------


## hotice

سلام
فراموش کردم تو پست قبلی هدفم رو بگم. بطور خلاصه:
1- همونطور که گفتم ایجاد شور شوق بین جاوا کارهای سایت!
2- خارج شدن زبان جاوا از حالت اکادمیک و کارایی تر نمایان شدن آن بین برنامه نویسان(حد اقل در همین سایت)
3- مرجع و راه حل برای خیلی از مشکلات بر نامه نویسی جاوا(رفع مشکلاتی که در ایجاد برنامه بوجود خواهد آمد می تواند برای خیلی از دوستان مورد استفاده واقع بشه)
4- ایجاد یک IDE سبک

اهداف فوق شاید ابتدایی به نظر برسند و لی در طول روند پروژه میتوانند تغیر کنند و تکمیل تر بشوند

----------


## manvaputra

سلام دوست عزیز مورد یک قابل توجه است ولی بقیه موارد مخصوصا مورد سه فکر نمیکنم دلیل خوبی باشه چون نت بینز این مشکلو به خوبی حل کرده

----------


## hotice

> سلام دوست عزیز مورد یک قابل توجه است ولی بقیه موارد مخصوصا مورد سه فکر نمیکنم دلیل خوبی باشه چون نت بینز این مشکلو به خوبی حل کرده


سلام
دوست گرامی من خودم همین حالا هم خیلی از کارهام رو با نتبینز انجام میدم.بدون اینکه به ideی دیگه بخواهم فکر کنم(مگر موارد خاص)
قصد من هم رقابت با هیچ ideی دیگه ای نیست

----------


## D32.00110

به نام RGB(255,255,255)X

همین دیشب یکی از دوستام ازم درخواست شروع نوشتن یه IDE خوب واسه جاوا رو می کرد، در حال Surf بودم که اینجا رو دیدم ...  :قلب: 
خیلی عالی هست، جالب و کاربردی  :کف کرده!:  با اینکه من چیزی از برنامه نویسی سرم نمیشه ولی خوب به عنوان تماشاگر هم شده تشویق میکنم ...  :تشویق:   :تشویق:   :تشویق: 

امیدوارم در محاط لطف الهی به هدفهای بالاتری برسیم  :چشمک:

----------


## hotice

خوب برای شروع باید کد هامون رو توی یک ادیتوری بنویسیم و اونو کمپایل کنیم.
اول باخودم فکر کردم از ادیتور خو سیستم عامل استفاده کنم.
بعد گفتم چرا یک ادیتور ننویسیم و اونو گسترش ندیم!!! بله یک ادیتور خودمون مینویسم و از این به بعد برنامه هامونو توی اون می نویسیم .
یک پوشه به اسم jde مخفف (java development environment) بسازید و وارد اون بشید با دستور copy con jde.java و یا via jde.java توی لینوکس یک فایل بسازید و مستقیم دستورات زیر رو توش وارد کنید(سورس زیر از اینترنت گرفته شده و هیچ تلاشی برای نوشتن اون رو من انجام ندادم ولی تست شده است)


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class jde extends JFrame {
    private JTextArea    _editArea;
    private JFileChooser _fileChooser = new JFileChooser();
    private Action _openAction = new OpenAction();
    private Action _saveAction = new SaveAction();
    private Action _exitAction = new ExitAction(); 

    public static void main(String[] args) {
        new jde();
    }
    public jde() {
        _editArea = new JTextArea(15, 80);
        _editArea.setBorder(BorderFactory.createEmptyBorde  r(2,2,2,2));
        _editArea.setFont(new Font("monospaced", Font.PLAIN, 14));
        JScrollPane scrollingText = new JScrollPane(_editArea);
        JPanel content = new JPanel();
        content.setLayout(new BorderLayout());
        content.add(scrollingText, BorderLayout.CENTER);
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = menuBar.add(new JMenu("File"));
        fileMenu.setMnemonic('F');
        fileMenu.add(_openAction); 
        fileMenu.add(_saveAction);
        fileMenu.addSeparator(); 
        fileMenu.add(_exitAction);
        setContentPane(content);
        setJMenuBar(menuBar);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("jde");
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    class OpenAction extends AbstractAction {
        public OpenAction() {
            super("Open...");
            putValue(MNEMONIC_KEY, new Integer('O'));
        }
        public void actionPerformed(ActionEvent e) {
            int retval = _fileChooser.showOpenDialog(jde.this);
            if (retval == JFileChooser.APPROVE_OPTION) {
                File f = _fileChooser.getSelectedFile();
                try {
                    FileReader reader = new FileReader(f);
                    _editArea.read(reader, "");
                } catch (IOException ioex) {
                    System.out.println(e);
                    System.exit(1);
                }
            }
        }
    }
    class SaveAction extends AbstractAction {
        SaveAction() {
            super("Save...");
            putValue(MNEMONIC_KEY, new Integer('S'));
        }
        public void actionPerformed(ActionEvent e) {
            int retval = _fileChooser.showSaveDialog(jde.this);
            if (retval == JFileChooser.APPROVE_OPTION) {
                File f = _fileChooser.getSelectedFile();
                try {
                    FileWriter writer = new FileWriter(f);
                    _editArea.write(writer); 
                } catch (IOException ioex) {
                    JOptionPane.showMessageDialog(jde.this, ioex);
                    System.exit(1);
                }
            }
        }
    }
    class ExitAction extends AbstractAction {
        public ExitAction() {
            super("Exit");
            putValue(MNEMONIC_KEY, new Integer('X'));
        }
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }
}

و با دستور javac jde.java کمپایلش کنید و با java jde اجراش کنید.  :لبخند:  
تبریک میگم اولین قدم برای ساخت ide رو برداشتید



موفق باشید 
ادامه دارد...........

----------


## hotice

سوال : اگه این پروژه اپن سورسه چطوری باید عضوش بشیم ؟
جواب : خیلی راحت:
1- به عضویت سایت http://ospdev.net در بیایید
2- ای دیتون رو به من بدید 
3- من عضوتون میکنم
سوال : چطوری به فایل ها دسترسی داشته باشیم؟
جواب : با svn اگه بلد نیستید طبق راهنمای زیر عمل کنید (برای ویندوز)
1- برنامه TortoisesSVN را از سایت http://tortoisesvn.net/downloads بگیرید
2- یک پوشه بسازید وارد آن شوید و بازدن کلید سمت راست گزینه SVN Checkout.. را انتخاب کنید

3- svn+ssh://developername@svn.ospdev.net/svnroot/jde را در قسمت بالا وارد کنید.(بجای developername ایدی خودتان را وارد کنید)



4- برای لینوکس svn checkout svn+ssh://_developername_@svn.ospdev.net/svnroot/jde.

سوال: از کجا می تونیم یکسری برنامه مشابه پیداکنیم که به این پروژه کمک کنیم؟
1- http://www.java2s.com/Code/Java/Swing-JFC/TextArea.htm
2-  سورس برنامه جی ادیت  http://www.jedit.org/index.php?page=download
3- خودتون بگردید و به این پروژه کمک کنید

----------


## amir-haghighi

به ياد او::

شايد اين پست من چندان به پست شما ربط نداشته باشه اما ....

من مدتي هست كه شروع به كار كردم براي نوشتن يك اديتور مختص php,java,c.

اين اديتور به زبان C#‎ نوشته ميشه.

دوستاني كه تمايل به همكاري دارن ميتونند با من تماس بگيرن و تمايل خودشون رو اعلام كنند.

----------


## pooyanm

سلام به همه دوستان
راستش چند وقت یكبار چنین پیشنهادی میشه . بعد هم نیمه كاره رها میشه تنها نقطه امیدواری اینه كه توافق برای آی دی ای بیشتر از پروژه های دیگه هست ولی وقتی میخوای جدی كار رو شروع كنی تازه خودتو درشرایطی میبینی كه هیچی سر جاش نیست! :ناراحت: 
از ما كه گذشت امیدوارم بتونید یه كار گروهی مرتب راه بندازید
موفق باشید

----------


## mazdadoost

> سلام به همه دوستان
> راستش چند وقت یكبار چنین پیشنهادی میشه . بعد هم نیمه كاره رها میشه تنها نقطه امیدواری اینه كه توافق برای آی دی ای بیشتر از پروژه های دیگه هست ولی وقتی میخوای جدی كار رو شروع كنی تازه خودتو درشرایطی میبینی كه هیچی سر جاش نیست!
> از ما كه گذشت امیدوارم بتونید یه كار گروهی مرتب راه بندازید
> موفق باشید


دوست عزیز :
بسیار مایلم نظر شما و سایر دوستان رو درباره چگونگی و علته نیمه کاره ماندن پروژه های گروهی که فرمودین بدونم .همچنین چنانچه ممکنه بفرمایید :آیا اصولا این پروژه ها شروع شده بود؟.
البته به نظرم مطرح شدن این موضوع در این تاپیک بی ربط باشه.و چنانچه دوستان موافق باشند تاپیکی با این موضوع درست شه تا در اون جا بهتر بشه در این مورد به بحث و گفتگو پرداخت.
با تشکر.

----------


## pooyanm

> دوست عزیز :
> بسیار مایلم نظر شما و سایر دوستان رو درباره چگونگی و علته نیمه کاره ماندن پروژه های گروهی که فرمودین بدونم .همچنین چنانچه ممکنه بفرمایید :آیا اصولا این پروژه ها شروع شده بود؟.
> البته به نظرم مطرح شدن این موضوع در این تاپیک بی ربط باشه.و چنانچه دوستان موافق باشند تاپیکی با این موضوع درست شه تا در اون جا بهتر بشه در این مورد به بحث و گفتگو پرداخت.
> با تشکر.


 سلام دوست گرامی
يه مراحلی رو دنبال كردیم ولي هيچوقت جدی ادامه  پیدا نكرد اين هم آدرس تاپيك قبلی:
https://barnamenevis.org/showthread.php?t=45358

----------


## manvaputra

سلام دوستان سوال من اینه که چرا IDE ؟ البته سوال من به این منظور نیست که ایده بهتری دارم نه فقط واقعا دوست دارم بدونم چرا اکثر دوستان به سمت ایحاد یک ای دی ای مایل هستند؟

----------


## hotice

سلام
چون سرم کمی شلوغ بود نمی خواستم پستی بفرستم اما با دیدن بعضی از گفته های دوستان خواستم بقیه رو در جریان روند این پروژه قرار بدم
سایت پروژه : *jde.ospdev.net*
بدون عضو شدن میتونید با svn از این ادرس فایل ها رو بگیرید svn://svn.ospdev.net/svnroot/jde
اسکرین شات کنونی برنامه :


اگه فایل ها رو گرفتید ساختار فایل ها بصورت زیر است(البته عکس رو بهتر از این نتونستم ویرایش کنم چون از Paint استفاده میکردم)



بسته های مربوط به فریم, منو , ادیتور رو جدا کردم که بهتر بشه روش کار کرد و ایکن هارو هم در پوشه خودش گذاشتم, بسته ادیتور هم چیزی نداره چون میخواهم بهتر روش کار کنم.
فکر کنم با یک نگاه به برنامه بتونید راحت حتی با فهم کمی از جاوا این پروژه رو درک کنید.
در هرصورت اگه سوالی داشتید بپرسید.
مشتاقانه منتظر نظرات شما هستم.
موفق باشید.

----------


## hotice

یادم رفت برای اجرا هم اگه اشکالی داشتید مثل تصویر فوق عمل کنید:

----------


## hotice

سلام
سوالی داشتم خدمتتون . برای منوی view میخواهم toolbar  رو view/hide بذارم. برنامه از  چندین کلاس برای هرکدوم از کارها تشکیل شده.
کلاس Fream کلاس menubar و کلاس Tollbar رو فراخوانی میکنه.
کلاس menubar کلاس viewmenu  رو فراخوانی می کند. من در کلاس fream ابجکت toolbar رو پاس دادم به menu bar وبعد پاس دادم به viewmenu ولی در اجرا با مشکل مواجه میشه:

///Class Fream 
public class fream extends JFrame{
    public fream(){
    menubar mbar=new menubar();
    setJMenuBar(mbar);
    maintoolbar mtoolbar=new maintoolbar();
    mbar.setToolbarObject(mtoolbar);

//Class Menu bar
public class menubar extends JMenuBar {
JToolBar etoolbar;


public menubar(){
 vmenu.setToolbarObject(getToolbarObject());
 }.
 .
 .
 .
 
 public void setToolbarObject(JToolBar toolbar)
    {
        etoolbar=toolbar;
    }
    JToolBar getToolbarObject(){
        return etoolbar;
    }
    
    
///View Menu

public class viewmenu extends JMenu {
    private JToolBar etoolbar;
    public viewmenu(){
.
.
.
if (etoolbar.isShowing()){
            etoolbar.setVisible(false);
        }
        }
  
    }
    public void setToolbarObject(JToolBar toolbar)
    {
        etoolbar=toolbar;
    }نظرتون چیه؟

----------


## mazdadoost

> سلام دوست گرامی
> يه مراحلی رو دنبال كردیم ولي هيچوقت جدی ادامه  پیدا نكرد اين هم آدرس تاپيك قبلی:
> https://barnamenevis.org/showthread.php?t=45358


با سلام:
دوست عزیز بنده به دقت تاپیکی که براش لینک گذاسته بودین مطالعه کردم.همچنین تاپیکه مشابهی رو برای پروژه موبایل و بلو توث دنبال میکردم ذکر چند به نظر خالی از اشکال نیست(هم برای شما هم برای دوست عزیز hotice  که این تاپیک رو شروع کردن:
1-شروع هر کاری منجمله پروژه های مختلف و در مورد ما پروژه های برنامه نویسی نیازمند فراهم شدن امکاناتی هست.امکانان شامل توانایی ها و دانش  هستند.
2-تفکر خلاقانه.
3-حد اقلی از نقدینگی.
چنانچه دوستان مایل به باز شدن موضوع  باشند میتونیم در تاپیکی به باز کردن این موارد بپردازیم.
موفق باشید.

----------


## pooyanm

> با سلام:
> دوست عزیز بنده به دقت تاپیکی که براش لینک گذاسته بودین مطالعه کردم.همچنین تاپیکه مشابهی رو برای پروژه موبایل و بلو توث دنبال میکردم ذکر چند به نظر خالی از اشکال نیست(هم برای شما هم برای دوست عزیز hotice که این تاپیک رو شروع کردن:
> 1-شروع هر کاری منجمله پروژه های مختلف و در مورد ما پروژه های برنامه نویسی نیازمند فراهم شدن امکاناتی هست.امکانان شامل توانایی ها و دانش هستند.
> 2-تفکر خلاقانه.
> 3-حد اقلی از نقدینگی.
> چنانچه دوستان مایل به باز شدن موضوع باشند میتونیم در تاپیکی به باز کردن این موارد بپردازیم.
> موفق باشید.


 تا جايي كه من ميدونم پتانسيلي براي پروژه هاي گروهي در ماها نيست نهايتا كاري كه ميشه كرد اينه كه بگيم يه بخش Open Source هست هر كس شخصا يه پروژه رو اونجا دنبال كنه

----------


## mazdadoost

> تا جايي كه من ميدونم پتانسيلي براي پروژه هاي گروهي در ماها نيست نهايتا كاري كه ميشه كرد اينه كه بگيم يه بخش Open Source هست هر كس شخصا يه پروژه رو اونجا دنبال كنه


دوست عزیز :
1-شما از کجا تا کجا میدونید.اگه زحمتی نیست دوستدارم بدونم.
2-پتانسیل برای پروؤه های گروهی شامل چه مواردی میشه؟
3-چرا الزاما باید هرکسی شخصا یه پروژه شخصی رو دنبال کنه؟
4-چرا اپن سورس؟
ممنموم.

----------


## mansour01

فوق العادست دوستان

متاسفانه به دلیل دانش کمی که در محیط اوپن سورس و خانواده یونیکس بیس دارم فکر نمی کنم بتونم کمکی کنم . من برای کاربرای ویندوز یه IDE رو به زبانی vb6 ارائه دادم و فقط صرفا برای تسهیل شروع کنندگان زبان جاوا در ویندوز ، ولی خب مشغله نمیذاره .
خیلی دوست داشتم دانشش رو داشتم و کمک می کردم ، ولی متاسفانه دانشم در این زمینه محدوده . به هر حال پیشنهاد می کنم یه دامنه اختصاصی با اعضای مشخص ایجاد کنید و کار رو بصورت یک پروژه تحقیقاتی ادامه بدید .

----------

