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 11 months ago.
Improve this question
I'm planning a client-server product for a tiny, low-volume, high-cost vertical market. One of the components of the product will be a desktop application, simple to moderate in complexity, for data entry and uploading to a central server from remote PCs and/or Macs via SOAP. The server is a Java web app.
Customers will be choosing their platform (Windows or Mac) based on what the client app runs on, so my options are wide-open here. However, I will be developing on a Mac and have a strong allergy to MS-specific technologies (sorry). The app will not need to run on any non-desktop-computer devices and I have total freedom to say it will support X but not Y or Z without any negative consequences (quite the luxury, to be sure).
I have a lot of experience in server-side development but very little in desktop GUI stuff, and am evaluating my options on the client - basically what do I want to commit to learning over the next 6+ months. I have server-side Java experience as well as a brief dabble in iPhone development, which went OK.
Overall I'm looking for:
Ease of learning & development
IDE support
Healthy surrounding ecosystem (libraries, tools, help, etc.)
Quality documentation
My options as I see them, in rough order of how I'm currently mentally ranking them:
Java Swing
Cocoa
Java SWT
JavaFX
Adobe AIR
XULRunner
Am I leaving anything out?
If your application has to support both Windows and Macs, I would suggest you avoid using languages which need compilation. In that case, Java, Python, and CS4 will be your candidates. Personally, I would go for Java Swing since it's proven to work on a number of platforms (not flawlessly tho') without the need of extra libraries. Some people complain about Swing, but my experience with it isn't that terrible. Well, maybe it was because I don't use it for huge and complex interfaces. If you choose to go with Swing, try to see if you can hand-code the interface yourself, it isn't that terrible, but it does have a learning curve. Good luck!
If you are an experienced web developer, you can try Electron, which allows you to develop desktop apps using HTML, CSS and JS. Electron apps are cross-platform and will run on Windows, Mac and Linux.
Related
I'm interested in your opionion concerning JavaFX 2+ and it's role in the future concerning the creation of desktop applications.
Imagine to start a new customer's project that requires a desktop GUI component.
Would you recommend using JavaFX for a GUI component?
Do you still prefer to use swing?
What are the pros and cons?
Are there known barriers?
If you even started a customer's project using JavaFX, would you do it again?
Personally, I believe in JavaFX and the ability to create GUIs for a great user experience.
I'm looking forward for a good and interesting exchange of opionions.
I'm currently asking myself the same thing. Some months ago. I have built a small specialised dictionary application using Swing, JPA 2.0 (eclipselink) and SQLite.
I just started to port this to JavaFX2. I am very curious how it will turn out, and it might answer some of the same questions you ask (though still in a specific context of course).
If you like, I can keep you updated about the progress.
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 4 years ago.
Improve this question
To run untrusted code at home I use a VMWare virtual machine. I want to find an alternate lightweight sandbox API for running untrusted applications, without the overhead of installing VMWare, or any other kind of end-user virtualization tool like that. (Edit: I don't want it to host an OS - I want it to run untrusted apps).
Ideally the sandbox would be (or could be made) transparent so the app running in the sandbox doesn't display any extra chrome or features. (Don't they do this in Parallels on the Mac)
The Windows .NET developer side of me wishes for an API so instead of booting up a special GUI, I can script scenarios for it.
It would be like how the Google Chrome web browser contains its own technology to sandbox scripts running from the Internet to protect the system. Google doesn't need to distribute VMWare with their browser and yet they achieve sandbox security for apps.
Edit:
Looking for something lightweight like Google Chrome contains with features like greatly restricted file/network/UI access, low privileges, etc. Not looking for running/hosting its own OS.
Google's Chrome is using 4 windows mechanisms to achieve this:
A restricted token
The Windows job object
The Windows desktop object
Windows Vista only: The integrity levels
Have a look at:
https://sites.google.com/a/chromium.org/dev/developers/design-documents/sandbox
They have a detailed description of what they're doing.
No, there is not.
I mean, you can use a different Windows account (with whatever permissions you consider appropriate), but then you need to be comfortable that the untrusted app can't break out of that. But you do have that same problem with VMWare (it has had bugs in the past that let you break out). Best thing to do is run in a Virtual Machine.
You may also be interested in Google's Native Client (also known as NaCl). This is a project that aims to be able to run (verifiable) x86 code inside a sandbox.
I have not implemented this..but my $.02.
You can consider implementing a Windows station. A windows station is basically a security boundary to contain desktops and processes
Only one Windows Station is permitted for Console Logon (Winsta0)
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682573(v=vs.85).aspx
You can achieve, process, Windows Object, and ACL Isolation on a per station basis.
Some API functions used in Windows Station are listed here:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms687107(v=vs.85).aspx
An Overview of Sessions,Desktops and Windows Stations.
http://blogs.technet.com/b/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx
There is a CodeProject example here with source:
http://www.codeproject.com/Articles/21352/Virtual-Desktop-A-Simple-Desktop-Management-Tool
I would recommend using API Monitor to debug Win32 API Calls
http://www.rohitab.com/apimonitor
hth
You can use Invincea FreeSpace or the free Sandboxie. Not sure if any of them are scriptable or not.
These are called Containment applications, i.e., sandboxes. You can read about it here: https://www.fas.org/irp/congress/1997_hr/h970211gm.htm
In a "sandboxing" question of mine I was pointed to Sandboxie.
I does not solve my problem at all but maybe it is interesting for you?
I don't know if it has an API but a quick google indicates that it is at least somehow automatable via command line.
Unfortunately, for Windows hosts your options are extremely limited. However, on Linux hosts, options such as mbox and capsicum are available which do what what you describe - i.e. lightweight, application level sandboxing.
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 6 years ago.
Improve this question
[This is a community Wiki so do not bother voting it down if it seems like a poll question. It is.]
Will Adobe be able to translate its success in Flash Penetration (although also questionable, see my post here) to Adobe AIR? Is Adobe AIR the "next big thing" in a desktop platform, just another player (along with what else?), or will it die a silent and unimportant death?
Unfortunately no, until they sort out, at the least, the following issue:
When you visit a site that needs Flash and you haven't got Flash installed, you get a very standard looking popup asking you if you to install it, and mentioning in the notes that it may not be safe to install an untrusted plugin.
When you visit a site that lets you download an AIR app, it pops up big red screaming warnings about the imminent trashing of your computer, the theft of your identity and a life of torment[1]. Unless, of course, all the bedroom programmers decide to cough up the ongoing cost of certification.
User encouragement FAIL. Hobby developer encouragement FAIL. Technophobe terrorficiation avoidance FAIL.
I love AIR, but I don't know what they were thinking with the installer. Laywers' office moved closer to the developers' over at HQ or something?
[1]Actual message may vary.
Simple answer NO
It's not fair to compare Flash's web success with Desktop or obvious reasons.
Flash developers were already using flash to develop desktop applications and now they've got a better framework. It'll be used by so many people but I don't it ever will be that popular.
I think that AIR will be around for a long time, it is great for web geeks who want desktop versions of the web applications.
I doubt that it will ever reach mainstream appeal, the masses need flash to watch their funny YouTube videos, but they'll never think to get AIR in order to use TweetDeck. The desktop apps they use are the ones that are already installed on their machine.
If AIR has improved incorporation of HTML content, it will be very successful.
If the ability to render HTML content has not been improved, then my humble opinion is that it will be mixed.
No.
The competition on desktop application market is much bigger, and users are expectiong more functionality and performance from desktop application than from web application, and AIR is just not there yet wrt performance and desktop capabilities.
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 years ago.
Improve this question
I've recently begun evaluating a few project management projects for the company I work for. It's the classic case - growing company looking for the right solution (meaning, free or really cheap). It's a combination shop - Windows, Macs, and Linux on the desktop. The tech savviness, of course, ranges from newbie to unix guru.
I have yet to find anything really close to a total solution. I don't expect to find one, but I am looking for suggestions/guidance/any sort of feedback based on people's experience.
What I'm looking for:
web based
methodology independent (not looking for an agile solution, etc.)
free or really cheap
document management
timelines and milestones
task tracking and assigning
reporting
source control
development wiki
I've looked at Trac, Projectivity, Basecamp, JIRA, RT, XPlanner, and SharedPlan. I've stayed away from Bugzilla due to previous unhappy experiences with it. None of these things really does everything - some are extendable, but I'd check here before going down that path.
Thanks,
Read through Edward Tufte's long-running Ask E.T. topic Project Management Graphics (or Gantt Charts). There is no consensus answer, but a lot of things have been evaluated.
link text
Trac - integration of tickets / wiki / commit-comments is great.
Caveat: installation can be PITA...
Check out Jira Studio. All of Atlassian's apps, hosted for you.
http://www.jira.com/
You get wiki/tracker/svn browser and more.
Have a look at Redmine, it's a Rails app. Haven't used it yet myself, but thinking about moving to it from activecollab. This applications seems to be evolved quite fast last year.
My experience of Jira (with Confluence for the wiki) has been rather good, although it is quite pricey the support people were very responsive and helpful. The place where I used that had svn for version control, and the two played together OK. On the other hand I found Xplanner to be a very odd app - really inflexible if you don't want to be doing XP, and surprisingly documentation-centric for an XP shop.
If you don't mind doing a bit of configuration yourself and have a windows server somewhere in your shop then you could set up your very own customized project management system in SharePoint.
* web based
* methodology independent
* free or really cheap
* document management
* timelines and milestones
* task tracking and assigning
* reporting
* source control
* development wiki
The source control system is not a part of SharePoint so it is really a question whether that requirement is paramount or not. But besides that you will have all of the above for free if you install WSS (comes free with a 2003/2008 server)
There is even a book from O'Reilly about how to set up a PMIS in SharePoint
One solution for the more visual of us would be to use Drupal 6x. with the Project and Subversion (now Version Control) modules. I prefer Joomla with ProjectFork, but until its modded with a repo browser, this will have to do.
Hope this helps.
http://drupal.org/project/project
I looked hard at Alfresco and Joomla.
None met my needs because I wanted the ultimate in simplicity. But, you seem to prefer having the kitchen sink included (while keeping it easy to use, I guess), so either one of these might be right for you.
Currently, I'm throwing together my own using Django, keeping only the project-deadline, forum and file-versioning concepts.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Ajax, Flex and Silverlight are a few ways to make more interactive web applications. What kinds of factors would you consider when deciding which to use for a new web application?
Does any one of them offer better cross-platform compatibility, performance, developer tools or community support?
Here's a quick rundown of each area (with lots of helpful links):
Cross-platform compatibility
Ajax works in any modern browser that can run JavaScript. Flex requires Flash or anything else that can handle SWFs but, once that's installed, it's a total freeride as far as compatibility. Silverlight is tricky and misunderstood so carefully consider your userbase before going with this MS foray into the rich web applications arms race. Also keep in mind that Silverlight is still in Beta, so it may become more widely used and installed in the future as it is developed.
Performance
I'm fearful of making too many statements about performance because it really depends on how much you are willing to optimize and the exact nature of your application. Also, some technology stacks are just never going to be very fast. Some people out there have been making comparisons, but again, it depends on a great many factors (even the version of the browser from which you are testing!). It's probably best to choose based on other factors and optimize once you've started to develop.
Developer tools
There are the "golden standard" dev tools for each of the three:
Ajax has basically unlimited options, depending on the rest of your technology and architecture choices. The big questions you're actually faced with are which libraries to rely upon, and Google has voiced a pretty well adopted answer with things like Web Toolkit. When you get right down to it, it's just XML and JavaScript, right?
Flex is from Adobe and, just like with Flash development, you'd better stick with their homegrown tools because--well--they're making the standards as they go along.
Microsoft has positioned Microsoft Expression Blend versions 2.0 and 2.5 for designing the UI of Silverlight 1.0 and 2 applications respectively. Visual Studio 2008 can be used to develop and debug Silverlight applications (from Wikipedia).
Community support
There is both official and unofficial community, corporate, and open-source support for all three options. Whichever you are already integrated with and which makes you feel most at home are very individual things, but I'll offer this advice: stick with what you know. If you are a MS developer and have MSDN as your homepage, you are probably going to think the Silverlight documentation and forums are really helpful. Flex has a very similar story; the forums are pretty good and if you're a Flash person already, you're going to be right at home with their documentation and user community.
On the other hand, Ajax is basically all over the place because you can implement so many different ways and use so many widely-varied libraries. Each library can have it's own forums to visit and mailing lists to lurk within for answers.
Once again, all three have corporate giants trying to foster their communities and to get the best support possible to the developers that will give them greater market share in the future.
The choice should in my opinion be mostly based on the nature of the application you'll be building (for example, if you need to manipulate vector graphics, Ajax is pretty much out), but here are some general guidelines:
Ubiquity
Ajax -- Supported by all modern browsers across platforms
Flex -- Runtime (Flash Player) has very wide installed base for Windows, Mac OS, Linux. Linux version was a bit buggy the last time I checked, though
Silverlight -- Runtime has quite low installed base (and no Linux support) at the moment
Choice of programming language
(Unordeded because of subjectivity, but note that Silverlight offers the most choice. Also note that the existing language experience of developers in your team should be taken into account.)
Silverlight: Any .NET language (C#, Visual Basic, IronPython(?), IronRuby(?)) (and XAML for UI definition)
Ajax: JavaScript (and XHTML for UI definition)
Flex: ActionScript 3 (and MXML for UI definition)
API Stability and compatibility
Flex -- Runtime is the same across platforms and browsers, more mature and stable at the moment than Silverlight
Silverlight -- Runtime is the same across platforms and browsers, less mature than Flex/Flash, v2.0 is still in beta
Ajax -- Compatibility problems across browsers (may be mitigated via Ajax libraries, though)
Web/Browser Integration
Ajax -- Content is native inside browser, based on standards: searchable by browser and search engine crawlers, subject to any standard UI practices the browser and operating system have established
Flex and Silverlight -- Content not native to browser (i.e. runs in its own little "sandbox/rectangle"): not necessarily subject to established UI practices for the given platform
Developer Tools
Ajax -- Your favorite code editor, browser and debugging toolkit for the browser
Flex -- Flex SDK is available for Windows, Mac OS and Linux for free and can be used with your favorite code editor. A Command-line debugger is included, but the Adobe-provided profiler is only available in the commercial Flex Builder IDE
Silverlight -- AFAIK, The SDK is available for Windows for free and can be used with your favorite .NET development tools
The web runtimes like Flex and Silverlight all offer enticing things, but come with two big costs:
They run only within a rectangle on the page, and don't interact with normal web widgets
They are only available to people who have that plug-in installed
Even the nearly-ubiquitous Flash isn't installed on every web browser, so by choosing to use a plug-in runtime you're excluding part of your audience.
In contrast, JavaScript (or Ajax) is available on pretty much every browser, and interacts better with normal web pages, but is a more primitive and restricting language. Using it for complex animations can be tricky, and you'll need to test your applications in more versions on more platforms to make sure it works.
Cross-platform compatibility isn't the issue it used to be, so the issue is this: Will you gain more in the features of a plug-in library than you'll lose in the audience you exclude?
My own answer has so far always been JavaScript/Ajax, but I'd re-evaluate that in any new project.
What is your audience: public web site or an intranet business app? Adoption rates are not relevant if you have a controlled audience who will install what is needed to run your app. However, if you need the largest possible audience to make your web startup a success then it may be critical.
What is your goal? Building something for the lowest cost? Learning new technology?
Can you leverage your existing skills? If you already know .NET then Silverlight gets a boost. Learning Flex may be interesting and useful, but is it more useful to you than more experience with .NET technologies? Remember to consider the opportunity cost of learning something totally new.
I don't see a clear technology winner at this point, and likely there won't be one for a long time, so the choice will come down to fairly subjective factors.
Other than what's already been mentioned here, another huge thing to consider is what your UI is going to be.
If you're going to be using a lot of advanced UI controls like trees, lists, tab controls, etc then consider the following:
JavaScript/HTML - No native support for anything beyond things basic drop down boxes, buttons, and text fields. If you want something like a tree control or tab control then you'll have to roll your own or find a third party library.
Adobe ActionScript - Native support for a wide array of advanced UI controls
Silverlight - 1.0 had very limited UI controls, but 2.0 will be adding many more and I'm sure we'll continue to see controls added in future releases.