Right programing language for developing application for Mac - macos

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 days ago.
Improve this question
I'm planing to buy a Mac. I would like to be able to develop GUI applications for Mac as well. Currently I develop in C# using VisualStudio as IDE. I also know Java and I'm familiar with NetBeans IDE. Application created in both of this languages can run on Mac (as can NetBeans IDE) but I was told that neither C# nor Java is recomended for MacOS X development.
So what language is recomended for MacOS X development ? I guess there is some recommendation from Apple for the developers ? I would prefer Object-oriented easy-to-use programing language (nothing like C) with good IDE that supports GUI creating (GUI designer).
Thank you for answers

There really is only one choice and that's Objective-C and XCode, anything else and you'll be running into problems and/or limitations.
As some have mentioned Python is one suggestion but what GUI toolkit to use? Then packaging becomes a problem.
Mono is OK but still a little buggy (and slooooow) on Mac's.
I haven't tried Java but the Apple port of the Java VM has just beed deprecated, make of that what you will.
XCode is very very good and integrates nicely with Mac/iPhone/iPad etc. but Obj-C takes a while to learn coming from a C#/Java background, plus XCode forces you to use MVC patterns in everything which again can be a culture shock.
I would say go with Obj-C and XCode and learn something new.

Objective-C with Cocoa should be your first, second, and third choices. That being said the learning curve can be steep but half the fun of this business is learning something new.
At my job (Seapine Software) we extensively use C++ with the Qt framework on the Mac and it also seems to work fine. If I were starting out I'd definitely go with Objective-C.

It's Objective-C. But if you want a beautiful and easy language, you can use python with wxPython. It'll look as native and, furthermore, it will make your applications multi-platform.
For the GUI designer, check wxFormBuilder. It supports wxPython for exporting.

I'm an iOS developer & use Objective-C every day, but if I were writing an OS X app, I'd definitely try out MacRuby. However, there is little controversy that, at present, if you want to write OS X native apps, you eventually must learn Objective-C. Most, like myself, grow to like it. Moreover, on OS X you have the advantage that you can run it garbage-collected and possibly save yourself some bookkeeping.

Daniel Steinberg says it well in the introduction to his Cocoa Programming book:
Use Objective-C. Sure, you can write Cocoa applications in other languages. But for now, learn the native language. There is a lot of support for new developers on the various Apple lists and in the support documentation, tutorials, and sample code accessible from Xcode. You will have an easier time of getting your question answered if you use the lingua franca of Cocoa development.

Yes it's Objective C. But check this out.
If you are familiar with HTML, CSS and Java Script, you can build platform independent desktop apps using Electron by Github. It's indeed amazing.
The desktop Apps like slack, atom, postman are built using this framework.
Please refer: https://electron.atom.io/
You can also use Qt which is a great cross-platform application development framework that is based on C++.
Please refer: https://www.qt.io/developers/

I started using swift to develop only Mac applications. But I wanted to use c for high performance apps, so I started using objective-c.

Related

Easy GUI programming in Mac OS X. Targeting Windows Platform

I have a friend who has an entry-level background in programming and is looking for a free GUI framework (IDE, GUI toolkit and GUI designer ) that:
He can use on Mac OS X to build Windows applications
It's very easy to use.
He is not interested in becoming a programmer, but would like to build an application for his work (not CS-related).
What are some good GUI frameworks/prog. languages he can use?
Qt including Qt Creater and Qt Designer is worth a try.
Especially, if your app should finally run cross-platform, on phones or on other embedded devices. Qt natively supports C++, but can also be used with 3rd-party extensions with Python (PyQt) and probably other languages.
On a Mac I have to recommend making Cocoa applications in Xcode written in Objective-C. Xcode is free to download and use, you pay if you want to submit applications to the Mac App Store.
I personally use Xcode every day and I think it's a great IDE. Currently has compiler support for Obj-C, C++, C and maybe more (not sure). More importantly for your needs, Xcode does a great job of integrating your code with its build in "interface builder" to help you quickly and easily create a nice UI.
NOTE: Xcode includes a new compiler feature (ARC) Automatic Reference Counting which is create for a new user. You can learn the language without having to worry about manual memory management.
Your friend should consider using PySide, a Python binding for the Qt GUI framework already mentioned.
With PySide you can use the Qt tools to create GUI elements interactively
and code your application logic in Python, which is a language often appreciated by non-programmers (and programmers too!) for its simplicity and intuitiveness.
Xcode includes a WYSIWYG editor for native controls and views. This was formerly a separate program called Interface Builder, but the editor was moved into the Xcode IDE at version 4.
AppKit is the framework it uses in most cases -- that's Objective-C. It's well supported. Your friend can also use it for source code editing and building and debugging apps. If he wants to write UIs programmatically, Xcode and AppKit are also good options.

Is Ruby a good option for writing platform independent desktop applications [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
Is Ruby a good option for writing (possibly and partially) platform independent desktop applications?
Is there any supported libraries to write code for windows,Linux, Mac Operating systems
I know Java have capabilities to write desktop applications, what about Ruby?
Ruby is a great language, but support for building graphical desktop applications is a bit weak. I would probably use JRuby + your Java GUI library of choice.
I believe JRuby can be pre-compiled to Java bytecode, which might also be a little bit better for closed-source applications than plain-text Ruby. (Although Java bytecode can easily be reverse-compiled.)
The problem with multi-platform GUI libraries is that they look ugly in any platform.
As a OSX user if I see a Java or X interface I automatically and mentally assign 10 less points to the quality of this application, even if it doesn't deserve it.
There is only one multi-platform GUI library that doesn't trigger any of my mental prejudices: HTML5. But of course you can not access to the native OS API.
I would recommend to try to define the architecture of your application is such a way that the 90% of the code is visualization agnostic. And then build this 10% of visualization layer for any platform adhoc.
If you are not worry about the professional perception of your app I can say that any of the propositions that have been done are a good choose.
I'd suggest you to take a look at Shoes.
Whether its a good option or not is a debate that depends on your constraints and preferences. If you are more comfortable with programming in Ruby as opposed to Java or C# then I'd definitely consider it to be a good option.
It depends on what kind of app you are developping. I would not say ruby is that cross plateforme for apps that need a complex gui for instance. Python seems a little bit more X-platform from my experience ,Java is definetly. And why not try C++ and Qt ?
http://qt.nokia.com/products/
Edit : since the question was edited , i would add go either with Java or Qt more than Ruby.
You could try FXRuby, it's based on the FOX Toolkit library and allows for cross-platform Ruby GUI development. Even more exotic platforms like FreeBSD are supported. You can package your Application together with a Ruby interpreter and all required frameworks to minimize target platform dependencies.
IMHO Ruby is a great choice for cross-platform GUIs. However, it depends on what GUI toolkit you use. The tools are: Qt, Tk, wxRuby, Shoes, GTK etc. I chose GTK because you can use the Glade interface designer to build your forms. You can see several examples of GUIs build with ruby at:
http://www.visualruby.net
About the programs' appearance, I've tried my programs on Ubuntu, Win7 and Win XP, and everything looks perfect. Also, if you look at Tks website, they have screenshots of TK GUIs in various platforms, and they look fantastic too.
The major benefit to writing GUIs in ruby, is that you get to use ruby instead of java. Personally, I find ruby a joy to work with. Good Luck.
I believe it can be with TideSDK. I recently discovered this and it seems to the one of the best approaches for multi-platform gui I have seen. It does use HTML5, but it has support for things like system tray and other native behavior.
I have looked into a bunch of the other alleged cross-platform solutions, but I don't find them appealing.
One note about TideSDK today: It only supports Ruby 1.8.7. This is actually a big issue for me as many of the gems I want to use is 1.9.2+. The TideSDK deployed on linux is 1.9, but not osx or windows, they are on 1.8.7. This is something they hopefully will update soon. Would love to see multiple ruby versions.
Anyways. Have a look at it. It is open source also, aka. free, so that is nice.

How do I code applications on a Mac so that they use the native UI elements?

I'm starting to program. Already did some things with Java: a calculator, one document management system powered with a database and some other home projects. But I don't like the visual look. I love however how mi Mac's Apps look. And I want to create Apps for mac. Already buy one but when I open netbeans to program it looks like the Apps doesn't feel like mac.
Is there any specific java code to make the controls looks like how the other mac apps look? My dad mention something about Object C but I don't understand. Can someone please explain me.
AFAIK You'll never get the look and feel of Aqua (Mac's UI Kit) by using Java. Why? Because to make Java platform independent some things needs to get ripped off. And native controls are one of them.
I think you're taking about Objective C which is the native development language for building Mac Apps. I'll recommend you the book "Learn Objective-C on the Mac" is pretty useful.
P.S. I'll encourage you to start with iOS (iPhone and iPad apps). Why? Well, I think is easier to begin with. Things like fixed resolution and so on make your development efforts small while beginning with. (Just my 2 cents)
If you want to code in Objective-C, you'll first need to trek over to the App Store and download Xcode. This will install C/C++/Objective-C compilers on your Mac and then you can start getting your hands dirty.
Depending on what you are trying to accomplish, you can just google/read/learn and build your own frameworks from the ground up or look at something like Cocoa to get started as well.
http://developer.apple.com/technologies/mac/cocoa.html
Cocoa Frameworks
The Cocoa frameworks consist of libraries, APIs, and runtimes that form the development layer for all of Mac OS X. By developing with Cocoa, you will be creating applications the same way Mac OS X itself is created. Your application will automatically inherit the great behaviors and appearances of Mac OS X, with full access to the underlying power of the UNIX operating system. Using Cocoa with the Xcode IDE is simply the best way to create native Mac applications.
Good luck!
Apple has deprecated a lot of the Java support in OS X. It's possible to have a Java application integrated, but there are some annoying bits missing. See one of my questions demonstrating some issues with Java applications in the Dock. You would be better off using Objective-C instead, since Apple has lots of documentation and tutorials available.
You're thinking of Objective C. You can also do applications for Mac using C/C++ but as of late the "popular" language for Mac development is Objective-C. There are tons of tutorials and plenty of documentation to walk you through writing apps for both Mac and iOS.

What languages have a good GUI API/Designer? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
I've been wanting to become proficient in a new language for a while. There are a few languages I want to learn but it's pretty important for me to be able to create a (Application) GUI. I work in C# so I have become very accustom to the GUI designer.
I would love to get better with C++ or Java (both of which I have a small amount of experience with). Other languages could be interesting too. I just really need to be able to make a GUI reasonably easily.
So what (non .net) language has a really good method of designing GUIs?
An extension to this question might be what are the most common GUI APIs/designers?
I would recommend you to look at Delphi. It's object pascal with a nice IDE and a nice community!
Take a look at www.codegear.com
CodeGear have also a C++ IDE, so you can have the bundle and put your hand dirty at Delphi and C++!
Hope his helps
vIceBerg
I agree with pmlarocque in that you should use NetBeans if using Java. It really makes GUI design easy.
As an aside, I also recommend pencil and paper. That really has helped me throughout the years, start making sketches of what you want it to be then replicate it in the IDE.
For GUI in C++ you should look C++ Builder, you can get Turbo C++ Explorer for free
I use both Visual Studio and Delphi, and the Delphi GUI editor is significantly better. It is worth a try. They make a free version.
May I recommend Flex? Flex Builder has a really nice GUI designer.
As for Java, both NetBeans and Eclipse IDEs are good choices.
To design GUIs in Java, you can use SWT, AWT or Swing widget toolkits.
I heard that some people experienced problems with SWT projects running on NetBeans. However, NetBeans comes with a built-in GUI Builder for Swing , a very powerful widget toolkit.
Of course, there's also a plug-in for Eclipse that allows you to build Swing GUIs, so it basically comes down to which IDE you prefer...
NetBeans has a great Swing GUI Builder (formerly Project Matisse). This is for Java, I think it was started by Sun but is an open source project. Very similar to Eclipse, but I found an advantage with NetBeans due to this GUI builder.
Check it out at: http://www.netbeans.org/features/java/swing.html
The cross-platform Qt GUI framework (which is mainly for C++) comes with Qt Designer.
Interface Builder and Qt Designer are by far the best GUI design tools I've ever used.
WPF/Silverlight: Expression Blend
Not as big as it used to be, but Powerbuilder.
Visual Dataflex has a decent GUI editor. It's a nice solution for building "database-agnostic" database applications.
Use Microsoft Expression Blend to layout your GUI.
WPF...
Before, I was using Qt Designer. First time I started using Expression Blend, I fell in love with it. So much easier to use than Qt Designer.
If your app requires high-performance, back-end it with some native-code language like C++.
If not, just stick with C# or Python.
Remember it's not just the tool that you use, but how it works as a whole
Too many combinations of different languages/vendors sometimes just makes you want to pull your hair our!
Well, I have two options: Objective-C on the Mac using Cocoa GUI framework, or Java for everything (Mac, Linux, MS-Windows) using the Swing API.
If you want to program in Objective-C targeting Mac OS X operating system for Apple Macintosh, iPhone, or iPod Touch - then the Interface Builder that comes bundled with the Xcode IDE (part of the Developer bundle) is really good.
You will need a Mac, of course, to be able to use it. If you have a Linux or Windows PC already, then you probably have a monitor, USB mouse, and USB keyboard. So you could get an Mac Mini for $599 and hook those up to it.
The Developer bundle is free. Just go to developer.apple.com and sign up for free Developer tools once you get your Mac.
If you are going to be a professional developer, then you might want to go there before you get your Macintosh and see if registering as a Pro and buying a Macintosh and stuff under that deal would net you more bang for your buck.
This Interface Builder of Apple's is pretty famous. It is what gave the NeXT computer is high reputation for being the way to create applications really fast. Wall Street financial firms, government agencies, and research types - plus a fair number of 3rd party commercial software developers - used it to create GUI applications very rapidly.
The name of Apple's Cocoa framework, by the way, used to be Next Step. When Apple bough NeXT from Steve Jobs, they renamed Next Step Cocoa. However, the classes still begin with NS as a little artifact of their heritage.
What people like about Interface Builder is that it has a very good layout manager and it lets you "wire" UI objects to other objects, making the latter "targets". Wiring them together this way creates a "connection".
So far this sounds very unexciting, I know. However, it gets exciting when you start doing it. You can design your actual runnable GUI in the designer and actually run it before you have written any code. Writing code lets you incrementally flesh out the user interface that have behavior more than UI stimulus-response behavior.
Anyway, the idea is that you can bang out a prototype extremely quickly, get feedback from someone based on this concrete GUI - and then fill in the details with Objective-C programming.
The most famous thing that was ever created with Next Step (Cocoa) is the World Wide Web (WWW). You may have heard of it. Well, the first web browser in the world was created by Tim Berniers-Lee at CERN in 1989 using Next Step, which had just come out the year before (1988).
He said he liked Next Step because it let him create his web browser very quickly. Even more impressively, his web browser not only allowed users to view web pages - his browsre also let users edit the web pages they viewed.
If you want to program in Java, NetBeans has a very nice Swing GUI designer.
It comes built into NetBeans. The GUI designer very easy to use and seems to have a full set of capabilities. My ownly dislike is that it puts commented sections in the code that you cannot edit. JBuilder did not put those annoying comments/restrictions in but JBuilder has pretty much faded from the scene these days.
Another downside of NetBeans is that it creates a .form file with the same name as the GUI class you are editing. Java code refactoring tools, other than NetBeans, are not going to know about this file. So, if you manually move the package the class is part of (or rename the class) - or use Eclipse or some other program to do it - you are going to have problems. You will need to be sure to use NetBeans to move/rename your class.
Eclipse had one in the form of an experimental plugin that was an okay start for a GUI designer called VE (Visual Editor) a number of years back. However, VE does not appear to have been updated in a couple of years.
I really like the true portability of Java programs. Java programs with GUIs are no exception.
I recommend adopting Java as your new language and using NetBeans as your first IDE, since you favor GUI program designs with a WYSIWYG editor.
Later, I suggest you also learn Eclipse. That way you will benefit from its more powerful code editing/refactoring capabilities.
You do not have to make an either-or choice between the two IDEs. With some caveats, like I have given - you can use both.
Netbeans IDE for Java as a sweet GUI designer.
Java Netbeans is good, and since java is fairly close to c# in syntax, it might make an easy learning experience
wxGlade is a GUI designer that can generate Python, C++, Perl, or Lisp and uses the wxWidgets library. And it's free.
IntelliJ IDEA for Java
http://www.jetbrains.com/idea/features/gui_builder.html
Here's a video:
http://www.javalobby.org/eps/intellij_ui_designer/
Vaadin
You can write business-oriented desktop-style web apps using only Java on the server side yet rendered automatically using Web standards client-side in the web browser.
The Vaadin Framework provides the magic of letting you define your desired fields, labels, buttons, and other widgets in a layout all using pure Java. By harnassing GWT technology, Vaadin transforms your Java code at runtime into the content for display in a user’s web browser. Your app is rendered using all the Web goodness of HTTP, HTTP/2, HTML, HTML5, CSS, DOM, JavaScript, WebSocket, Push, and so on… but does so transparently to the Java programmer. All that transformation is done under the covers. As a Vaadin programmer, all I deal with is Java coding.
I prefer using the well-documented API to programmatically layout the contents of my forms and widgets for the user-interface. You can do so free-of-cost using the open-source framework.
Alternatively, you can use their commercial product Vaadin Designer for a visual drag-and-drop layout editor tool.
Try the live Sampler and other demos such as Reindeer demo.
Since you mentioned you use C++, I'd recommend MatDeck(https://labdeck.com/comparison/). They offer a GUI Designer in their unique code. Their code is based on C++(It's called MatDeck C++ style code) and since it's specialized to their software it needs a lot less code to run. They offer much more and are a fully-fledged software. They also have a whole page that compares their code(https://labdeck.com/python/c-style-script/).

Is Ruby any good for GUI development? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am considering creating a GUI-based tool that I want to be cross-platform. I've dismissed Java, as I personally do not like Swing. I'm currently considering C# and using Mono to make it cross-platform. However I'm wondering whether new-fangled cross-platform languages like Ruby can offer me a decent GUI development environment.
The short answer: no (because you said cross-platform).
The long answer: cross-platform GUIs are an age-old problem. Qt, GTK, wxWindows, Java AWT, Java Swing, XUL -- they all suffer from the same problem: the resulting GUI doesn't look native on every platform. Worse still, every platform has a slightly different look and feel, so even if you were somehow able to get a toolkit that looked native on every platform, you'd have to somehow code your app to feel native on each platform.
It comes down to a decision: do you want to minimise development effort and have a GUI that doesn't look and feel quite right on each platform, or do you want to maximise the user experience? If you choose the second option, you'll need to develop a common backend and a custom UI for each platform.
ruby is not a bad choice for your common backend.
You'll have Ruby/GTK, which allows you to use the GTK toolkit under linux. I think that should be working under Windows and Mac Os (as for Gimp, Gaim and so on).
A french magazine post a good beginner article about Ruby/GTK.
Edit : According to main page on the SourceForge project, Ruby-Gnome2 (aka Ruby/GTK) is cross-platform (Windows, Linux, Mac Os).
Ruby has Shoes, but that might be a little lightweight.
With Ruby you can use Tk, which is a mature, cross platform UI toolkit. It is the defacto GUI toolkit for Python and Tcl, and is also available for use with Perl. The most recent versions of Tk make use of native widgets which addresses the primary concern that Tk looks dated.
A language-neutral website devoted to Tk is http://www.tkdocs.com/ which includes examples coded in both Ruby and Tcl.
There's also FXRuby which has the benefit of a Pragmatic Programmer book, as well as wxRuby which is based on the wxWidgets C++ GUI framework.
being a wxperl programmer, i know that wxruby is there as well. Wx is pretty fast and has true crossplatform look and feel.
Take a look at Ruby GUI 2008 Survey Results and the discussion here. You will love to know.
Not sure about Ruby, but you mentioned Mono/C# -- I've used Mono and GTK# quite a bit lately and am very impressed. Seems to be pretty stable and cross-platform portability is nice.
Ruby/GNOME2 works pretty well. You can use Glade to drag and drop window elemtns and load it the UI from your Ruby app.
Have you looked at SWT on Java? It uses native widgets and is much easier to get a nice interface with it than Swing.
If you ever venture over to the mac, check out RubyCocoa. It is obviously only for OSX, but I've seen a lot of folks scratch their head when looking to do GUI development on the mac and if you love ruby RubyCocoa is a lot of fun.
I strongly back Qt for cross platform GUI development. It's awesome and APIs are very intuitive. GUI look and feel almost native with Qt because it uses GUI controls provided by underlying OS.
Though the basic interface with C++ other language bindings are available. For Ruby RubyQt is available. Unfortunately it's very immature.
I would suggest looking at visualruby. Its an IDE to create GUIs using ruby. It uses GTK as its graphics toolkit, and the apps look great to me on any platform. You can see screenshots on Win7, WinXP, Ubuntu, and Mac on the screenshots page:
http://visualruby.net/site/Screen%20Shots.html
You can easily try it on every platform by installing visualruby on various platforms, and running the example programs.
The checked answer was written before visualruby was released.

Resources