gui design

Discussion in 'C++' started by cmk128@hotmail.com, Sep 25, 2006.

  1. Guest

    Hi
    I am an os developer, i am developing a gui library. I found that
    java swing is the most easiest to use gui library , am i correct?
    I am trying to port swing to c++, is there any thing i should be
    careful?
    thanks
    from Peter ()
    , Sep 25, 2006
    #1
    1. Advertising

  2. wrote:
    > I am an os developer, i am developing a gui library. I found that
    > java swing is the most easiest to use gui library , am i correct?


    Correct in what? That you found it? Probably not. Other folks had
    probably "found" the same thing before you. That it is "the most
    easiest to use"? Probably not. "Ease" is part of perception, so it
    cannot be objectively "the most".

    > I am trying to port swing to c++, is there any thing i should be
    > careful?


    Be careful not to waste your time on something that nobody needs.

    V
    --
    Please remove capital 'A's when replying by e-mail
    I do not respond to top-posted replies, please don't ask
    Victor Bazarov, Sep 25, 2006
    #2
    1. Advertising

  3. Phlip Guest

    cmk128 wrote:

    > I am an os developer, i am developing a gui library. I found that
    > java swing is the most easiest to use gui library , am i correct?


    Swing is a very poor architecture, and Java is not a good library for GUIs
    in general.

    Why are you developing a new GUI library? What's wrong with the dozens of
    existing ones?

    > I am trying to port swing to c++, is there any thing i should be
    > careful?


    I would research Qt or wxWidgets, in C++. But I would also investigate using
    a softer language. C++ is for high-performance situations, and GUIs only
    need to respond in user-time. And softer languages like Python, Ruby,
    Smalltalk, etc. support "block closures". They make GUI events absurdly easy
    to code, whereas C++ makes them absurdly hard.

    That's the main reason Java is a poor language for GUIs. To compete with
    C++, Java did not start with any advanced OO concepts, just _some_ aspects
    of C++-style static typing. So yet another irony of our industry is the
    majority of GUI projects are written in languages promoted as being good for
    GUIs when they are actually very bad!

    --
    Phlip
    http://www.greencheese.us/ZeekLand <-- NOT a blog!!!
    Phlip, Sep 25, 2006
    #3
  4. Bart Guest

    wrote:
    > Hi
    > I am an os developer, i am developing a gui library. I found that
    > java swing is the most easiest to use gui library , am i correct?


    'Overdesigned' would probably be a better term.

    Regards,
    Bart.
    Bart, Sep 25, 2006
    #4
  5. Bart Guest

    Phlip wrote:
    > cmk128 wrote:
    >
    > > I am an os developer, i am developing a gui library. I found that
    > > java swing is the most easiest to use gui library , am i correct?

    >
    > Swing is a very poor architecture, and Java is not a good library for GUIs
    > in general.
    >
    > Why are you developing a new GUI library? What's wrong with the dozens of
    > existing ones?


    Given that he's an OS developer, perhaps he really meant that he is
    implementing a GUI library, not developing one.

    > > I am trying to port swing to c++, is there any thing i should be
    > > careful?

    >
    > I would research Qt or wxWidgets, in C++. But I would also investigate using
    > a softer language. C++ is for high-performance situations, and GUIs only
    > need to respond in user-time. And softer languages like Python, Ruby,
    > Smalltalk, etc. support "block closures". They make GUI events absurdly easy
    > to code, whereas C++ makes them absurdly hard.
    >
    > That's the main reason Java is a poor language for GUIs. To compete with
    > C++, Java did not start with any advanced OO concepts, just _some_ aspects
    > of C++-style static typing. So yet another irony of our industry is the
    > majority of GUI projects are written in languages promoted as being good for
    > GUIs when they are actually very bad!


    I have to agree here. You can use C++ or Java for application
    infrastructure and a scripting language for the UI. It's a very
    flexible approach that has merits. However, given the note about OS
    development perhaps the intent is to provide the actual low-level GUI
    support of the OS, like the Win32 API in Windows.

    Regards,
    Bart.
    Bart, Sep 25, 2006
    #5
  6. Jens Theisen Guest

    "Phlip" <> writes:

    > C++ is for high-performance situations, and GUIs only
    > need to respond in user-time.


    Now I realise why most UI applications take ages to respond! They
    respond in user time!

    Apparantly this is even possible in C++.

    Regards,

    Jens
    Jens Theisen, Sep 25, 2006
    #6
  7. Guest

    Phlip 寫é“:

    > cmk128 wrote:
    >
    > > I am an os developer, i am developing a gui library. I found that
    > > java swing is the most easiest to use gui library , am i correct?

    >
    > Swing is a very poor architecture, and Java is not a good library for GUIs
    > in general.
    >
    > Why are you developing a new GUI library? What's wrong with the dozens of
    > existing ones?
    >
    > > I am trying to port swing to c++, is there any thing i should be
    > > careful?

    >
    > I would research Qt or wxWidgets, in C++. But I would also investigate using
    > a softer language. C++ is for high-performance situations, and GUIs only
    > need to respond in user-time. And softer languages like Python, Ruby,
    > Smalltalk, etc. support "block closures". They make GUI events absurdly easy
    > to code, whereas C++ makes them absurdly hard.
    >
    > That's the main reason Java is a poor language for GUIs. To compete with
    > C++, Java did not start with any advanced OO concepts, just _some_ aspects
    > of C++-style static typing. So yet another irony of our industry is the
    > majority of GUI projects are written in languages promoted as being good for
    > GUIs when they are actually very bad!
    >
    > --
    > Phlip
    > http://www.greencheese.us/ZeekLand <-- NOT a blog!!!


    Hi Phlip
    What is "block closures"?
    thanks
    from Peter
    , Sep 26, 2006
    #7
  8. Guest

    Phlip 寫é“:

    > cmk128 wrote:
    >
    > > I am an os developer, i am developing a gui library. I found that
    > > java swing is the most easiest to use gui library , am i correct?

    >
    > Swing is a very poor architecture, and Java is not a good library for GUIs
    > in general.
    >
    > Why are you developing a new GUI library? What's wrong with the dozens of
    > existing ones?
    >
    > > I am trying to port swing to c++, is there any thing i should be
    > > careful?

    >
    > I would research Qt or wxWidgets, in C++. But I would also investigate using
    > a softer language. C++ is for high-performance situations, and GUIs only
    > need to respond in user-time. And softer languages like Python, Ruby,
    > Smalltalk, etc. support "block closures". They make GUI events absurdly easy
    > to code, whereas C++ makes them absurdly hard.
    >
    > That's the main reason Java is a poor language for GUIs. To compete with
    > C++, Java did not start with any advanced OO concepts, just _some_ aspects
    > of C++-style static typing. So yet another irony of our industry is the
    > majority of GUI projects are written in languages promoted as being good for
    > GUIs when they are actually very bad!
    >
    > --
    > Phlip
    > http://www.greencheese.us/ZeekLand <-- NOT a blog!!!


    Why swing is poor architecture? i think swing is very easy to use, and
    all its components are OO concept. I know some people saying swing is
    slow, but it is nothing to do with swing, it is the performance problem
    of the VM, not the problem of the GUI library itself.

    In swing, you will never get a segmentation fault, everything is
    neither working or not-working. Java is a very safety langauge, unlike
    c++, some code look like working, but will generate a segmentation
    fault after running a long time.

    I want to avoid this in the GUI library, but not very clear how i can
    do it :(
    thanks
    from Peter
    , Sep 26, 2006
    #8
  9. Phlip Guest

    cmk128 wrote:

    > Why swing is poor architecture?


    Because I have experience with the best OO GUI toolkits, and Swing can't do
    what they do, at the level of the language itself.

    Beyond that, I have almost no experience with Swing itself, and I do not
    doubt that a Java expert can use it elegantly, reliably, and robustly.

    > In swing, you will never get a segmentation fault, everything is
    > neither working or not-working. Java is a very safety langauge, unlike
    > c++, some code look like working, but will generate a segmentation
    > fault after running a long time.


    That's because Sun invented Java by removing the features from C++ that make
    it fast. I can easily write programs that never fault (modulo whatever
    compiler and platform they use). And I can crash a Java program with one arm
    tied behind my back.

    > I want to avoid this in the GUI library, but not very clear how i can
    > do it :(


    Download and run many GUI libraries, in many languages. You must learn much
    more than Swing before you even start your project. Even download Amulet (if
    you can find it), Frog, FLTK, and Fox. And run them in different languages.

    If you design a library when all you know is Swing and C++, you will make
    many mistakes that other libraries show the fixes for.

    --
    Phlip
    http://www.greencheese.us/ZeekLand <-- NOT a blog!!!
    Phlip, Sep 26, 2006
    #9
  10. <> wrote in message
    news:...

    Phlip ??:

    > cmk128 wrote:
    >
    > > I am an os developer, i am developing a gui library. I found that
    > > java swing is the most easiest to use gui library , am i correct?

    >
    > Swing is a very poor architecture, and Java is not a good library for GUIs
    > in general.
    >
    > Why are you developing a new GUI library? What's wrong with the dozens of
    > existing ones?
    >
    > > I am trying to port swing to c++, is there any thing i should be
    > > careful?

    >
    > I would research Qt or wxWidgets, in C++. But I would also investigate

    using
    > a softer language. C++ is for high-performance situations, and GUIs only
    > need to respond in user-time. And softer languages like Python, Ruby,
    > Smalltalk, etc. support "block closures". They make GUI events absurdly

    easy
    > to code, whereas C++ makes them absurdly hard.
    >
    > That's the main reason Java is a poor language for GUIs. To compete with
    > C++, Java did not start with any advanced OO concepts, just _some_ aspects
    > of C++-style static typing. So yet another irony of our industry is the
    > majority of GUI projects are written in languages promoted as being good

    for
    > GUIs when they are actually very bad!
    >
    > --
    > Phlip
    > http://www.greencheese.us/ZeekLand <-- NOT a blog!!!


    Why swing is poor architecture? i think swing is very easy to use, and
    all its components are OO concept. I know some people saying swing is
    slow, but it is nothing to do with swing, it is the performance problem
    of the VM, not the problem of the GUI library itself.

    In swing, you will never get a segmentation fault, everything is
    neither working or not-working. Java is a very safety langauge, unlike
    c++, some code look like working, but will generate a segmentation
    fault after running a long time.

    I want to avoid this in the GUI library, but not very clear how i can
    do it :(
    thanks
    from Peter

    You don't see segmentation faults very much in the Java/SWING environment
    because they
    are often trapped.. The same thing can be done in C++ to stop segV's
    although that's
    a bad practice since it hides the underlying problem, resulting in incorrect
    behavior.
    Dave Townsend, Sep 26, 2006
    #10
  11. toton Guest

    Phlip wrote:
    > cmk128 wrote:
    >
    > > Why swing is poor architecture?

    >
    > Because I have experience with the best OO GUI toolkits, and Swing can't do
    > what they do, at the level of the language itself.
    >
    > Beyond that, I have almost no experience with Swing itself, and I do not
    > doubt that a Java expert can use it elegantly, reliably, and robustly.
    >
    > > In swing, you will never get a segmentation fault, everything is
    > > neither working or not-working. Java is a very safety langauge, unlike
    > > c++, some code look like working, but will generate a segmentation
    > > fault after running a long time.

    >
    > That's because Sun invented Java by removing the features from C++ that make
    > it fast. I can easily write programs that never fault (modulo whatever
    > compiler and platform they use). And I can crash a Java program with one arm
    > tied behind my back.
    >
    > > I want to avoid this in the GUI library, but not very clear how i can
    > > do it :(

    >
    > Download and run many GUI libraries, in many languages. You must learn much
    > more than Swing before you even start your project. Even download Amulet (if
    > you can find it), Frog, FLTK, and Fox. And run them in different languages.
    >
    > If you design a library when all you know is Swing and C++, you will make
    > many mistakes that other libraries show the fixes for.
    >
    > --

    Swing is one of the best designed library (The next is Qt ofcourse). I
    had worked with a vast range of gui library, like Swing, AWT, SWT from
    Java, Qt, wxWidgets , VCF, FLTK, UCPP, GTK+, Motif etc from C++ world
    as well as TCL/TK & Python from script world. If one want to have some
    heavy GUI based application , scripting is just not possible (I wil
    definitely stop using OpenOffice or MS Office if they make the GUI
    using TCL/TK). Moreover they have very poor look on many platform (
    check Ansys on Windows) and have incomplete functionality. Even most of
    the time they are actually wrapper for C/C++ library. Note that major
    GUI library are C/C++ or Java only. However scripting language has
    their place. When I have some academic signal procesing application and
    just want to show the result in some GUI I use TCL/TK for that.
    Moreover with advanced C++/Java framework and so beautifule editors &
    form designers, there is no disadvantage of the heavyweight language
    based GUI. Now it is much faster to design an very sophisticated GUI
    with Netbeans or Ecplice than to design it in Python or TCL/TK or
    Python.
    Secondly, If you want to get best design for GUI framework look at
    Swing, Java and VCF. They gives absolutely flexibility to implement
    whatever you like, in minimum time.
    GTK+ is very well designed C library (not OO library). wxWidgets is the
    worst designed (after Motif & MFC !) but vastly supported GUI
    framework. It runs in very old to very new PC. If there is a partial
    implemented C++ compiler for a platform , it is going to support it.
    Thus it never use standard OO concepts, and standard C++ concepts
    (which has both advantage & disadvantage). Most modern GUI framework
    for C++ after Qt is VCF , which looks much like Swing, but still under
    development. And it integrates AGG , thus one can have very fast
    beautifull 2D graphics. One can look at its existing Windows & Mac
    port.
    The other C++ framework like UCPP and smooth (and few other) has a
    different stack based approach for GUI , thus they seems to be little
    faster. However they lacks flexibility (they are new one and yet under
    development). However as they do some most mordern way to design it
    (and do many static compilation based on template, they may have a
    larger exe size and compilation time, but have faster runtime response,
    and may be smaller memory footprint). If one is going to develop some
    C++ GUI framework, one should look at this approach also before
    starting anything.
    And finally Swing is the library for standard design. It has best
    design no doubt. If you sit with a GOF book and Swing library, you can
    look how beautifully the whole thing fits into it (even much better
    that its own ET++ or PresentationManager examples). And if anyone says
    it is not possible to do something with Swing, they are either saying
    false, or don't know Swing. Other than doing something platform
    specific (which can anyway be implemented with a platform API binding)
    Swing can do everything. One can create stunning effect, large scale UI
    based application and what not? Look the Sun JavaONE Show examples, or
    Project Looking Glass, or Swing Hacks book to see what Swing can do.
    They can have better effect than Vista Aero (MS has done it with 6
    years development with such a huge team).
    So in my suggestion the way Swing, Qt and VCF works is beautiful and
    very flexible. C framework GTK+ is no doubt the king. The different
    kinds of framework like UCPP also needs some attention. And apart from
    small UI, scripting language do not give any advantage over C++ or Java
    or Delphi (Pascal) . They are based on the wapped C++ api.

    abir
    > Phlip
    > http://www.greencheese.us/ZeekLand <-- NOT a blog!!!
    toton, Sep 26, 2006
    #11
  12. kwikius Guest

    wrote:

    > I am trying to port swing to c++, is there any thing i should be
    > careful?


    Lots probably, but OTOH Go for it!

    regards
    Andy Little
    kwikius, Sep 26, 2006
    #12
  13. kwikius Guest

    wrote:
    > Phlip 寫é“:


    > > I would research Qt or wxWidgets, in C++. But I would also investigate using
    > > a softer language. C++ is for high-performance situations, and GUIs only
    > > need to respond in user-time. And softer languages like Python, Ruby,
    > > Smalltalk, etc. support "block closures". They make GUI events absurdly easy
    > > to code, whereas C++ makes them absurdly hard.


    <...>

    >
    > Hi Phlip
    > What is "block closures"?


    http://en.wikipedia.org/wiki/Closure_(computer_science)

    Basically it's little more than an obscure and vague term for a fancy
    function object, and AFAICS use of the term in preference to functor
    or function object in a C++ newsgroup just leads to unnecesary
    confusion..

    But C++ handles function objects very nicely thankyou.

    Sure there are a lot of C++ GUI's around, but many are old and don't
    make much use of modern C++ features, and none of them is standard.
    Whether Swing is good is practically irrelevent. The Point is its Java
    standard, well documented, well featured and widely used.

    Go for it :)

    regards
    Andy Little
    kwikius, Sep 26, 2006
    #13
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. paul.foreman

    GUI - GUI value passing

    paul.foreman, Oct 22, 2004, in forum: Java
    Replies:
    5
    Views:
    734
    Michael Rauscher
    Oct 25, 2004
  2. ulysses
    Replies:
    4
    Views:
    754
    Werner Schiendl
    Oct 22, 2003
  3. Andrew Lapidas

    PyGTK GUI update without signals from GUI

    Andrew Lapidas, Apr 13, 2008, in forum: Python
    Replies:
    0
    Views:
    403
    Andrew Lapidas
    Apr 13, 2008
  4. Stefan Ram
    Replies:
    3
    Views:
    479
    Arne Vajhøj
    Nov 20, 2011
  5. Hal Fulton

    GUI and non-GUI data

    Hal Fulton, Aug 5, 2004, in forum: Ruby
    Replies:
    1
    Views:
    131
    Austin Ziegler
    Aug 5, 2004
Loading...

Share This Page