Can you do Desktop Development using JavaScript? [closed] - javascript

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 6 years ago.
Improve this question
I know there's JScript.NET, but it isn't the same as the JavaScript we know from the web.
Does anyone know if there are any JavaScript based platforms/compilers for desktop development? Most specifically Windows desktop development.

There is XULRunner, which let's you build GUI apps like Firefox using JavaScript and XUL. It has a lot of extension to JavaScript though, using XPCOM. They also offer Prism which let's you build web apps that work offline, sort of like AIR. Yahoo uses it for their Zimbra email desktop client.

Yes, with Adobe AIR. Adobe AIR lets you make desktop applications with Javascript, Flex, or Flash.

Looks like there are 3 types of html5-desktop app
SDK
https://qt-project.org/
http://awesomium.com
http://berkelium.org
http://www.appcelerator.com/platform
Browser runtime
http://developer.mozilla.org/en-US/docs/XULRunner
http://developer.chrome.com/apps/about_apps.html
Node.js based
http://appjs.com/
https://github.com/maccman/bowline

Windows 8 allows for Windows Store Apps to be written in HTML5/JavaScript.

"node-webkit is an app runtime based on Chromium and node.js. You can write native apps in HTML and Javascript with node-webkit. It also lets you call Node.js modules directly from the DOM..."

There's Titanium Developer which is similar to Adobe AIR (html+css+javascript), but does not require a framework to be pre-installed.

You can make a desktop application using XML and javascript (and/or VBS) using the Windows Script host.
The trick is to save your XML file with a .hta extension. See this reference.

There's SpiderMonkey, a JavaScript engine written in C and Rhino, an implementation of JavaScript in Java.

Try AppJS, It is an SDK on top of NodeJS and Chromium Embedded Framework. You can build desktop apps easily with the web technologies.
Webpage: http://appjs.com
Github: https://github.com/appjs

Google Gears. There's also Mozilla's XUL, but it's too bit complicated, IMHO (albeit extremely powerful).

Google has a new interesting technology going on. It's in a quite early stage but works good already. It's called Packaged Apps and is using Chrome as a runtime and works on both Pc and Mac. Have a look at http://developer.chrome.com/apps/about_apps.html

Another option I didn't see mentioned is for Cocoa (Mac OS X, iPhone OS) applications you can use a web view (embedded WebKit) as the application UI.

You can try JavaLikeScript, it does not provide the same native/root objects that a web browser but it has network and user interface features.

Electron, originally Atom Shell, allows applications to be written in web technologies (HTML, JS, CSS) and run on any of the major operating systems, including Windows.

There's Yahoo's Konfabulator for the windows desktop.

Script# has extensions for Vista Gadgets.
http://projects.nikhilk.net/ScriptSharp/

Here are some JSOS (Javascript Operating Systems), sort-of still need a browser.
http://fractalbrain.net/ /* The Best. */
http://cometdesktop.com/ /* Alright. */
http://skylightproject.com/ /* Worst */

I answered with node-webkit above, but I recently saw a presentation on Tint2. It seems to address security concerns with node-webkit and looks promising.

Related

Can I build a mobile app using node.js, angular and sequelize? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
I wonder if I could build a mobile app using node.js, angular and sequelize and how building mobile apps differs from building web apps? I started recently learning node.js, angular and sequelize..
Thank you!
Mobile apps can be created using HTML5 based technologies. You would not run node.js on a mobile device, you could have a node.js app running on a server that the mobile app can call for data and HTML templates.
Building an app in HTML5 is never going to give you the same performance as a native app like an IOS app in Swift but it can reuse a lot of code and templates between the web app and mobile ports between different OSs.
It is a big topic but short answer is that you can build mobile apps with Angular but node.js will only provide you the server side part of the app.
The essential notion behind these tools is basically to reduce "mobile app" development to "web development," by applying (as much as possible) the exact same techniques to both environments. "The display is furnished by a web-browser, controlled by CSS and JavaScript and so-on."
This is "one way to do it," certainly.
But, as you embark on your learning-curve, you should also know that there are (several) other ways to do it. You should make it a point to explore all of them. (In due time ... in due time ... Rome wasn't built in a day.)
Native Application Development uses a vendor's supplied tools to produce an app that basically runs only on that vendor's hardware. *(Although, you should pay careful attention to Apple's Swift, which certainly seems to me to possibly have "cross-platform intentions."
Cross-Platform Toolkits, such as Haxe and OpenFL, which are both so-called "transpilers." These tools take a common source-language format and compile it into source code for a variety of platforms, which are then fed (if necessary) to a platform-specific compiler tool.
The specific tools that I have cited here are by no means the only such tools now available: this is a rapidly-evolving technology.
there are a lot of ways to develop hybrid mobile apps. If you were familiar with angularjs, IONIC will be a nice choice. Ionic combines AngularJS (JavaScript by the way) with HTML5+CSS and uses Cordova to access native device functions. There are genera 3 steps to develop hybrid mobile apps. Firstly, we develop it just as we develop the web app. Secondly, we need to install the platform dependency( android SDK for android mobile, Xcode for ios or windows phone ) and install build tool such as Apache cordova ( enables software programmers to build applications for mobile devices using CSS3, HTML5, and JavaScript instead of relying on platform-specific APIs like those in Android, iOS, or Windows Phone). thirdly, using cordova to build your web app into ios or android mobile app.
However, the use of Web-based technologies leads some Apache Cordova applications to run slower than native applications with similar functionality.

How to develop Desktop Apps using HTML/CSS/JavaScript? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
First, I'm not interested in doing this professionally. I am a web developer, a coworker of mine recently left for Spotify and said he will be working mostly in JavaScript for the Spotify Desktop app. He said it uses "Chrome frame" and everything inside is done like a web app (HTML/JS/CSS).
As a web developer who never built anything for Desktop, this is great news. If I can use the technologies I already know and implement them inside some sort of a "frame" and still be able to build a windows or better yet cross platform app.
I know I didn't mention anything about the database, but even a simple hello world desktop app with web technologies would be great to get going.
So how does one go about this? Exactly what do I need/need to know?
You may start with Titanium for desktop dev. Also you may have a look at Chromium Embedded Framework. It's basically a web browser control based on chromium.
It's written in C++ so you can do all the low level OS stuff you want(Growl, tray icons, local file access, com ports, etc) in your container app, and then all the application logic and gui in html/javascript. It allows you to intercept any http request to either serve local resources or perform some custom action. For example, a request to http://localapp.com/SetTrayIconState?state=active could be intercepted by the container and then call the C++ function to update the tray icon.
It also allows you to create functions that can be called directly from JavaScript.
It's very difficult to debug JavaScript directly in CEF. There's no support for anything like Firebug.
You may also try AppJS.com (Helps to build Desktop Applications. for Linux, Windows and Mac using HTML, CSS and JavaScript)
Also, as pointed out by #Clint, the team at brackets.io (Adobe) created an awesome shell using Chromium Embedded Framework that makes it much easier to get started. It is called the brackets shell: github.com/adobe/brackets-shell Find out more about it here: clintberry.com/2013/html5-desktop-apps-with-brackets-shell
NW.js
(Previously known as node-webkit)
I would suggest NW.js if you are familiar with Node or experienced with JavaScript.
NW.js is an app runtime based on Chromium and node.js.
Features
Apps written in modern HTML5, CSS3, JS and WebGL
Complete support for Node.js APIs and all its third party modules.
Good performance: Node and WebKit run in the same thread: Function calls are made straightforward; objects are in the same heap and can just reference each other
Easy to package and distribute apps
Available on Linux, Mac OS X and Windows
You can find the NW.js repo here, and a good introduction to NW.js here. If you fancy learning Node.js I would recommend this SO post with a lot of good links.
Awesomium makes it easy to use HTML UI in your C++ or .NET app
Update
My previous answer is now outdated. These days you would be crazy not to look into using Electron for this. Many popular desktop apps have been developed on top of it.
NOTE: AppJS is deprecated and not recommended anymore.
Take a look at NW.js instead.
It seems the solutions for HTML/JS/CSS desktop apps are in no short supply.
One solution I have just come across is TideSDK: http://www.tidesdk.org/, which seems very promising, looking at the documentation.
You can develop with Python, PHP or Ruby, and package it for Mac, Windows or Linux.
Sorry to burst your bubble but Spotify desktop client is just a Webkit-based browser. Of course it exposes specific additional functionality, but it's only able to run JS and render HTML/CSS because it has a JS engine as well as a Chromium rendering engine. This does not help you with coding a client-side web-app and deploying to multiple platforms.
What you're looking for is similar to Sencha Touch - a framework that allows for HTML5 apps to be natively deployed to iOS, Android and Blackberry devices. It basically acts as an intermediary between certain API calls and device-specific functionality available.
I have no experience with appcelerator, bit it appears to be doing exactly that - and get very favourable reviews online. You should give it a go (unless you wanted to go back to 1999 and roll with MS HTA ;)
I know for there's Fluid and Prism (there are others, that's the one I used to use) that let you load a website into what looks like a standalone app.
In Chrome, you can create desktop shortcuts for websites. (you do that from within Chrome, you can't/shouldn't package that with your app) Chrome Frame is different:
Google Chrome Frame is a plug-in designed for Internet Explorer based
on the open-source Chromium project; it brings Google Chrome's open
web technologies to Internet Explorer.
You'd need to have some sort of wrapper like that for your webapp, and then the rest is the web technologies you're used to. You can use HTML5 local storage to store data while the app is offline. I think you might even be able to work with SQLite.
I don't know how you would go about accessing OS specific features, though. What I described above has the same limitations as any "regular" website. Hopefully this gives you some sort of guidance on where to start.
You can build Javascript apps with Adobe AIR… http://www.adobe.com/products/air.html
CEF offers lot of flexibility and options for customisation. But if the intent is to develop quickly node-webkit is also a good option. Node-web kit also offers ability to call node modules directly from DOM.
If there aren't any native modules to integrate Node-Webkit can offer better mileage. With native modules C/C++ or even C# it is better with CEF.

How can I develop mobile applications using HTML5? [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 7 years ago.
Improve this question
I am able to develop android native applications using android SDK, but now I'd like to learn how to develop mobile applications using HTML5.
Which tool is used to develop these mobile application in HTML5?
Can anybody help me?
Thanks in advance.
Sencha Touch is a good Javascript framework to create mobile applications. It supports all phones the utilize the webkit for their browser.
It can be wrapped in phonegap to utilize the phone specific API's. Sencha is now creating their own wrapping system to submit apps to the appstores.
While your question can easily be answered by a simple search of "android html5 framework", there is PhoneGap.
This link was the first to show up.
If you want to embed your html inside an android application, you can use the webview widget for android.
Now, talking about how to do your webview itselft. I would recommend to use a mobile framework to build a good looking and accessible application without too much difficulty. I have worked with Jquery Mobile, and I would say it is a good way to start.
Use Apache Cordova http://cordova.apache.org/ as the container for displaying HTML 5 pages.
Use Twitter Bootstrap for creating responsive web pages which automatically resize components based on the size/type of the screen on which the app is being viewed.
Another tool you may want to try is Tiggr (http://gotiggr.com). Tiggr is a cloud service for building HTML5 mobile apps. It comes with visual jQuery Mobile designer.
Note: I'm the Developer Advocate for Tiggr
Since you're an Android developer, you're probably used to writing in Java. You might thus also want to look into Google Web Toolkit, which enables you to write HTML5 apps in Java. There are a number of different GWT libraries for mobile widgets. The questions boils down to whether you want to write in Java or in Javascript.
You may also want to try MoSync (www.mosync.com) for it, the advantage of MoSync is - it's truly cross platform and it let's you write hybrid applications as well (using C++ and HTML5) and being cross platform if you write a plugin it goes on to every platform, which would mean we don't have to write separate plugins in Java, Object C, Dot Net etc. as it is the case on PhoneGap.
I wrote a tutorial to make a HTML5 twitter client app in a minute or so using MoSync and Sencha Touch and it may help you.
You could use RIB to build your HTML5 UI and then add code to it by yourself.
JqueryMobile
A unified, HTML5-based user interface system for all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation.
With Drag and Drop UI tool

Packaging a Node.js web application as a normal desktop application [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I've searched a bit, but I can't find an existing tool for this.
I have a Node.js web server that is designed to run on your own computer that does some snazzy things for you. It would be pretty awesome if I could double click MySnazzyThing.app instead of installing Node.js, and npm and running node mysnazzyapp.js on the command line.
The .app executable would spool up the Node.js server and open a simple native WebKit window which would show what would normally be on localhost:3000 if I were running on the command line.
This native application could then, say, be distributed through the Mac App Store. And bam, a Node.js desktop application.
Does any such tool exist? Or are there any technical reasons that this wouldn't work as I imagine it?
Option 1: Electron (formerly atom-shell)
This is the shell that GitHub's Atom and Microsoft's Code editors use. It’s very similar to node-webkit, though it will run the script first, and you have to create a view/window for the user. There are some other minor differences, but it's worth looking at.
Option 2: NW.js formerly node-webkit
The gist is that it basically extends the JavaScript engine for you to write a web-based application supporting Node.js' extended object model, and modules... you then package your package.json start.html modules and JavaScript files into a ZIP file (with the .nw extension) and run it with nw(.exe) .. there are Windows, Mac and Linux builds available.
Option 3: Neutralinojs Github
Neutralinojs is a lightweight and portable desktop application development framework. It lets you develop lightweight cross-platform desktop applications using JavaScript, HTML and CSS. You can extend Neutralinojs with any programming language (via extensions IPC) and use Neutralinojs as a part of any source file (via child processes IPC).
Option 4: MacGapNode (OS X only)
MacGap with Node.js integration (it seems to be getting stale)
Option 5: Tauri Github
Tauri is a toolkit that helps developers make applications for the major desktop platforms - using virtually any frontend framework in existence. The core is built with Rust and the CLI leverages Node.js making Tauri a genuinely polyglot approach to creating and maintaining great apps.
Aside: Services...
I can't speak for OS X on this as a .App, but it could well be possible to create a background service install in Node.js and a link to a "local" site on the desktop. Most browsers have an option to not show all the features (I know Firefox in particular does).
I know your question is to OS X in particular, but in Windows you can use NSSM to run anything as a service, and I have used it for Node.js-based services in Windows. I think some of the other options above are better depending on your needs though.
Removed:
nexe - stale/unmaintained
AppJS - replaced with DeskShell
DeskShell - stale, website offline
node-webkit - renamed to NW.js
XULRunner project stalled, and exceedingly behind.
Thrust (Node Adapter) - deprecated/stale
Carlo Chrom(ium) shell from Node.js. - unmaintained/stale
This answer is copied for multiple questions, and these references are mostly for updating convenience.
Packaging a Node.js web application as a normal desktop application
Package a Node.js application as an OS X application
You can accomplish this using AppJS.
I suggest looking into Topcube. Its goal is to give Node.js developers a way to have a desktop GUI to their Node.js servers using HTML5 + CSS 3 as the GUI platform.
Topcube at GitHub.
Currently there are a plethora of ways to accomplish this.
The clear winner in the space of packaging a Node.js + HTML5 application, is currently Electron (used by Atom, Visual Studio Code, Slack, Discord, etc.).
You can also use any other language packaged as an application (using tools for those languages/stacks), and check for a node installation, launch the "server" script with Node.js, then launch the default browser (or some web view component, by some other means), finally set location to the Node.js service. This is a very lightweight and efficient method, however not as well integrated with the OS as a solution like Electron.
The primary competitor to Electron here, is NW.js.
As far as I can tell, the main feature that NW.js has that Electron does not (yet) is compilation/obfuscation. While Electron makes auto updates easy.

Solutions for distributing HTML5 applications as desktop applications? [closed]

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.
What are some solutions for distributing an HTML5 based desktop application?
I want to be able to distribute my HTML5 app as a standalone desktop application on Windows, OSX, and Linux. I would like for people to be able to double click my app icon shortcut to run my program.
I don't want the browser window showing at all, just my app. Is this possible?
HTML5 Apps in 2014
Frames by chrome/webkit
Electron (former Atom Shell)
Electron is an open source library developed by GitHub for building cross-platform desktop applications with HTML, CSS, and JavaScript. Electron accomplishes this by combining Chromium and Node.js into a single runtime and apps can be packaged for Mac, Windows, and Linux. (source)
The folks at github use this to provide their code editor Atom as an app. It has an documented api and a help channel on the official atom forums.
Node-Webkit, the most minimal approach
node-webkit is an app runtime based on Chromium and node.js. You can write native apps in HTML and JavaScript with node-webkit. It also lets you call Node.js modules directly from the DOM and enables a new way of writing native applications with all Web technologies.
Intel is behind this (?). I've been told it's very rough around the edges.
Brackets Shell, the sandbox of Adobes code editor (and base of Adobe Edge)
Note: The brackets-shell is only maintained for use by the Brackets project. Although some people have definitely had success using it as an app shell for other projects, we don't provide any official support for that and we haven't done a ton of work to make the app shell easily reusable. Many people will likely find it easier to use a project like node-webkit, which is more generic by design.
says the readme, but there are quite a lot of folks out there who did it nevertheless.
Frameworks + Tools
Adobe AIR, as another answers suggested.
The Adobe® AIR® runtime enables developers to package the same code into native apps for Windows and Mac OS desktops as well as iPhone, iPad, Kindle Fire, Nook Tablet, and other Android™ devices, reaching the mobile app stores for over 500 million devices.
Sencha is a company which sells tools for app developers, including html5 app development and distribution.
Inactive approaches
Tide SDK (archived on 2015-07-12 at archive.org), beta version, discontinued on 12th Jul 2015
http://www.tidesdk.org/
XULRunner from Mozilla may do the trick for you but adds some overhead.
app.js ended at 28th Oct 2013 for being surpassed by (https://github.com/rogerwang/node-webkit)[node-webkit].
Because it is simple and yet powerful. Using AppJS you don't need to be worry about coding cross-platform or learning new languages and tools. You are already familiar with HTML, CSS and JavaScript. What is better than this stack for application development? Beside, AppJS uses Chromium at the core so you get latest HTML 5 APIs working. So and focus on the task your application should do.
Mozilla Prism is decomissioned, their slugline was:
Bringing web applications to your Desktop
Prism is an application that lets users split web applications out of their browser and run them directly on their desktop.
You can use AppJS which uses Nodejs and Chromium to build html5 apps for desktop. check it out: http://appjs.com
Github Link: https://github.com/appjs/appjs
Definitely check out Titanium. Just today I took a functional HTML5 app and with a few minor modifications was able to drop it into Titanium and package it up for Mac, Windows and Linux.
And it also supports PHP, Python and Ruby if your app requires "server-side" processing.
You might want to look at XULRunner from Mozilla. At a 10000 foot level, the FireFox browser is a XULRunner application (obviously a very sophisticated one, but...). But XULRunner lets you use Javascript and XML to create applications, and the browser window is one of those components, so you once you get your basic window up, you can likely do pretty much anything you want.
Also, depending on the sophistication of your application, there are several "widget" frameworks (like Dashboard on the Mac, Yahoo Widgets, Windows Gadgets) which are basically HTML runtimes as well.
chrome can do what prism does See -- Tools-> Create application Shortcut
You can try Phonegap, there is a Windows Desktop Port: https://github.com/davejohnson/phonegap-windows
I tried the mac-port, it worked well. I didn't try the windows version yet.
[On Windows only] try HTML Application (HTA) approach - simply save your .html file with .hta extension. It also provides some additonal settings to get rid of browser window, set level of trust for the app, etc. Read more here: http://en.wikipedia.org/wiki/HTML_Application and here http://technet.microsoft.com/en-ca/scriptcenter/dd742317.aspx
Adobe AIR is meant to let you work primarily in HTML, CSS, and JavaScript while providing a desktop application. (Caveat: I haven't actually used it myself.)
Check this new project from Mozilla. You can create desktop apps too : https://developer.mozilla.org/en/Apps
Detail here: http://hacks.mozilla.org/2012/05/desktop-apps-with-html5-and-the-mozilla-web-runtime/
Hmmm... a virtual machine for HTML5/CSS/JS... sounds like a browser. :)
Maybe Adobe AIR would do the trick, because it's based on the idea of bringing rich Internet apps to the desktop. I've never used it, however.
One thing you could do is develop a very basic desktop app that uses some kind of prepackaged web browser control (e.g. if you're developing for a Mac, just drop a WebView in the window and add some basic code to load your html upon app startup).
For mobile phones you can use PhoneGap http://www.phonegap.com/ . Probable with some more coding you can use it for desktop.
Sencha http://www.sencha.com/
Pokki http://www.pokki.com/
Currently the answer is that are different solutions of each platform.
For MAC OSX You will create a Cocoa Desktop App with a UIWebView
For Windows you will make a .NET desktop app with a browser component.
You can use a embedded server like Tomcat or maybe Apache.
I use tomcat for a complete java web application. Run inside browser, but the application need be installed. The shortcut to start the app, start the service and open the browser.
Or try use webkit
A bit late, but you can use a portable version of google chrome, and then create a small windows app to install it, and create a .ink shortcut to its --kiosk and app mode.
Kinda like chrome application shortcuts, but where you install chrome for them.
If you just need it for Windows, you should consider HTML Applications (HTA), it's been part of Internet Explorer since IE 5 (10+ years).
No server required, full HTML formatting, full access to local resources (even COM / USB ports), awesome. Also, easy to debug with Visual Studio, just bind to MSHTA.exe
You can enable HTML 5 in HTA's with the following meta tag:
<!-- enable html5 features -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>

Categories