Jump to content

Programing language for "desktop applications?"

rayden54

A lot of the new Visual Studio/C#/Microsoft stuff (it what I learned in school) seems really geared toward their new "universal" apps (universal my foot, they won't even work on Windows 7). The rest either seems to be geared toward Android/iOS development or web applications.

 

Funny thing, I'm not trying to build a web application and I don't own an Android or iOS device (I've got an old flip phone and a Surface Pro) and my main computer still runs Win7.

 

So, for the people still creating desktop applications (assuming there are people writing desktop applications) how are you doing it?

Link to comment
Share on other sites

Link to post
Share on other sites

 

There's Java too. Not the best in terms of performance and functionality. But definitely a good place to start and awesome compatibility.

Current PC: Origin Millennium- i7 5820K @4.0GHz | GTX 980Ti SLI | X99 Deluxe 

 

Link to comment
Share on other sites

Link to post
Share on other sites

c++, java too but c++

Pro Tip: don't use flash when taking pictures of your build; use a longer exposure instead. Prop up your camera with something (preferably a tripod) if necessary.

if you use retarded/autistic/etc to mean stupid please gtfo

Link to comment
Share on other sites

Link to post
Share on other sites

C++ + Win32 or Qt. C# + WPF or Winforms.

CPU: Intel i7 - 5820k @ 4.5GHz, Cooler: Corsair H80i, Motherboard: MSI X99S Gaming 7, RAM: Corsair Vengeance LPX 32GB DDR4 2666MHz CL16,

GPU: ASUS GTX 980 Strix, Case: Corsair 900D, PSU: Corsair AX860i 860W, Keyboard: Logitech G19, Mouse: Corsair M95, Storage: Intel 730 Series 480GB SSD, WD 1.5TB Black

Display: BenQ XL2730Z 2560x1440 144Hz

Link to comment
Share on other sites

Link to post
Share on other sites

A lot of the new Visual Studio/C#/Microsoft stuff (it what I learned in school) seems really geared toward their new "universal" apps (universal my foot, they won't even work on Windows 7). The rest either seems to be geared toward Android/iOS development or web applications.

 

Funny thing, I'm not trying to build a web application and I don't own an Android or iOS device (I've got an old flip phone and a Surface Pro) and my main computer still runs Win7.

 

So, for the people still creating desktop applications (assuming there are people writing desktop applications) how are you doing it?

Android, iOS, and Universal Apps aren't web apps. Yes you can do a web app, but you can do a proper software. That is the choice to get max performance and have an app that feels like it is part of the OS.

As for Windows, Universal Apps is powerful, but you can't do software that tweak things in the registry, do admin things, and stuff like that. basically, you can't make a system tweak utility, if you wonder. But, you can make a great apps. Heck Microsoft made Office with it, and Edge web browser. So you can do powerful things, including embedded system, like read sensor data to process it.

But as you said, Universal Apps is for Windows 10 ecosystem (Windows 10, Windows 10 Mobile, XBox One, Holo Lens, and Windows 10 IoT).

For Windows XP and up software development (Win32 apps), I suggest C# with Windows Presentation Foundation (WPF). Why?

C# is a higher level language than C/C++. Normally, a standard program doesn't require absolute max performance, at least not these days, and file size is also not really an issue. C# allows you to develop an application with ease, while retaining a lot of the power of C/C++.

C/C++ biggest pain, is, in my opinion, string manipulation, something you'll probably do a lot in a software, and C/C++ makes it a pain, especially if you want to use standard libraries mixed with Windows APIs. That is of course, the other complications such as working with pointers. But C/C++ give you the most performance, hence why it is highly used in games.

Why Windows Presentation Foundation and not Windows Forms? WPF is Microsoft latest graphical subsystem that is hardware accelerated, very customizable, Microsoft is really focused on it, heck Universal Apps uses it. It also has better high-DPI support helping you make your software high DPI aware with a bit more ease.

I would avoid Java, frankly. I mean it is good to learn it. If you have not touched at school. LEARN it! That I recommend. Many companies uses Java (mostly because it is multi-platform and has free IDEs). But Java takes time to load, you don't have an exe to you have to build a wrapper of sorts, performance is not as good, lots of security issues, a pain to make your project stand alone and not ask people to install Java to make it run.

Link to comment
Share on other sites

Link to post
Share on other sites

C/C++ biggest pain, is, in my opinion, string manipulation, something you'll probably do a lot in a software, and C/C++ makes it a pain, especially if you want to use standard libraries mixed with Windows APIs. That is of course, the other complications such as working with pointers. 

C++ has std::string , which is a lot more convenient than the old strings.

Oh wait...but then most interfaces take as input character arrays...eh, at least we have std::string::c_str().

 

Anyway, OP, you should look at C++ and C# primarily. You can use the normal Win32 API , or you can use other external libraries , such as Qt , or maybe gtkmm (C++ interface for GTK+), which are also cross-platform. Or, if you want to go the .NET way , use Winforms.

 

The easiest way to make a window is probably with Java.

i5 4670k @ 4.2GHz (Coolermaster Hyper 212 Evo); ASrock Z87 EXTREME4; 8GB Kingston HyperX Beast DDR3 RAM @ 2133MHz; Asus DirectCU GTX 560; Super Flower Golden King 550 Platinum PSU;1TB Seagate Barracuda;Corsair 200r case. 

Link to comment
Share on other sites

Link to post
Share on other sites

C++ has std::string , which is a lot more convenient than the old strings.

Oh wait...but then most interfaces take as input character arrays...eh, at least we have std::string::c_str().

Right. Well it is isn't the end of the world, just annoying, and you need sometimes converters functions.

gtkmm (C++ interface for GTK+), which are also cross-platform

I agree with everything, but GTK. Not under Windows. I think that thing is super dated, and not even high-DPI aware. We use it at work for our software, and we want to pull the plug on it, and switch to Windows Presentation Foundation.

Link to comment
Share on other sites

Link to post
Share on other sites

Android, iOS, and Universal Apps aren't web apps. Yes you can do a web app, but you can do a proper software.

I didn't say they were. I said everything I'm seeing these days are either web apps or Android/iOs/Windows Store apps and I'm not interested in trying to build my application as any of the above.

 

I'm just looking to build a desktop app, but because all the new info points in that direction, it's hard to tell what's still relevant and what's not.

 

Edit: Regarding WPF, is there a good resource on separating the Windows 10/Universal application stuff from the stuff that'll work with a simple standalone desktop app? Again all the new resources on WPF (and specifically MVVM which is what everyone and their dog told me to use with WPF) are for Universal apps and thus contain stuff that doesn't work with "traditional" desktop apps.

Link to comment
Share on other sites

Link to post
Share on other sites

I didn't say they were. I said everything I'm seeing these days are either web apps or Android/iOs/Windows Store apps and I'm not interested in trying to build my application as any of the above.

Ah ok! :)

I'm just looking to build a desktop app, but because all the new info points in that direction, it's hard to tell what's still relevant and what's not.

Yea. Understandable.

But C# + Windows Presentation Form is where it is at now for Win32 programs (desktop programs). Windows Presentation Form existed for a while, but in the early days it was hard to know if it was "just a Microsoft Silverlight thing", which started that way, or a real GUI infrastructure to use and will be supported for years and years, like Windows Forms was. After multiple years, I think it is safe to assume that WPF is real, here to stay, and fully supported. Microsoft focuses on it (support, growing it), Modern UI (Windows 8 apps), and now Universal Apps uses it as well, which just reinforces that it won't go anywhere, and support for it will continue.

Link to comment
Share on other sites

Link to post
Share on other sites

We started out with C/C++ for quite large project, but due to many hassles we ended up using Java and the SWT libraries (from Eclipse). It looked and acted like a native app on Windows, Linux and Mac OS, loading fast and proved to be very usable and stable. The users could not notice a difference between a truly native app whatever the platform. This was a massive win for us as it was truly multi platform. Oh and a new user could install it and the JVM via a HTTP URL. Such is the power of JNLP.

 

Something I've learned over the years is to split your app (small or large) into service and client pieces. Think about the service API and test it before even writing a gui. This will enable you to expose it via a remote (e.g. REST, ProtoBuf, Netty etc) interface later if needed with hardly any client changes. 

 

This is the same way Linux tools/apps are written. You will always have a libXXXX portion and then the Python/Ruby/C++/Bash front end using the library.  Makes sense.

Link to comment
Share on other sites

Link to post
Share on other sites

a pain to make your project stand alone and not ask people to install Java to make it run.

^Do you happen to know a way to do this? Third-party tools would be good, but I wouldn't mind jumping through hoops to not use third-party tools. 

 

I agree with kango_v in that a well-written Java application can be very similar to a native app in functionality, appearance, and speed (at least when there's some headroom available). IntelliJ Idea is an example of this. 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×