7 ms·
I really think this is a terrible idea and wish people would stop making toolkits for these. Also no one should be allowed to claim these are native apps. Its f
by laveur 12y ago
I really think this is a terrible idea and wish people would stop making toolkits for these. Also no one should be allowed to claim these are native apps. Its false advertising.
- VieElm 12y agoCan you please explain why you think it is a terrible idea and why you wish people would stop doing this? If you included that in your original comment it would contribute more to the discussion.
- rnovak 12y agobecause there's nothing native about HTML/CSS/JS. EVER. It is by definition run through an interpreter, it even directly says "uses webview". So it's NOT native. Calling it native is a LIE. Edit: how about responding instead of downvoting?
- themoonbus 12y agoIt's a native wrapper, so their use of the word native is completely fine. I don't think they're trying to trick anyone here...
- masukomi 12y agoby than definition ALL apps are "native". Because if there wasn't some "native" code involved then nothing would run at all.
- themoonbus 12y agoIf we're going to be that pedantic, then it becomes difficult to communicate at all...
- rnovak 12y agoThe interpreter is native, but the code that runs on top of it isn't. In interpreted code, something like 'var i = 0;' could result in 100+ instructions, from the compilation/parsing of the script, to the actual running of that statement, and then the final execution on the hardware. In C, `int i = 0;` WILL result in 2 instructions - movl $0, -4(%rbp) movl $0, %eax
- snowwrestler 12y agoBy this standard, no interpretted languages are native. That would mean for example that Android has no native apps at all, because they're all written in Java. There are already terms for what you're talking about: compiled applications, or binary applications. "Native", to me, simply means an app that does not run in a browser. It is irrespective of language. Reasons this distinction might matter include the degree to which the code is sandboxed, OS and hardware features that the code can access, the distribution method, or the extent to which the app can run without network connectivity.
- rnovak 12y agoWell, I guess I think there are kind of two levels of nativity. Operating System native, i.e. uses API's from the OS directly. But then I think there's also hardware native, which means the IR that the code gets compiled into executes directly on the hardware. Both Java and C are compiled into a binary IR (Intermediate Representation), C is executed directly on the CPU (provided it's in the proper format: ELF, etc...), whereas Java is run in a compatibility layer, the JVM, which interprets the IR into native machine instructions. I don't think Java is hardware native,but it can be OS native, making use of features or APIs that are OS dependent. I feel like Android itself is native, it's compiled into direct machine code by each vendor, but I don't feel that the applications that run on it are hardware native, but they are native to Android, in that Dalvik and Hotspot bytecode are incompatible with each other's respective VM. I guess I'm just a pedantic dickweed :|
- snowwrestler 12y agoI'm no expert but I believe most modern javascript engines now compile Javascript JIT. In fact I think Apple recently added LLVM to their Javascript engine. Node.js runs Javascript local to the machine in the V8 engine, which compiles it. As I understand it, that is architecturally analogous to running Java locally in the JVM. So I think that practically speaking, Javascript and Java are not so different from one another in how they access the hardware resources of the machine.
- kitbrennan 12y agoYou didn't actually explain why this is a terrible idea? At the end of the day it enables developers to access native APIs such as notifications or file writing through their language of choice.
- deleted 12y ago[deleted]
- tjsix 12y agoWhat is so terrible about tools like MacGap, Node Webkit, Atom Shell, etc? They are great prototyping tools and especially useful for things like 'in-house' apps where tools can be rapidly developed and updated as needed. While the argument could be made that Node Webkit and Atom Shell aren't necessarily 'native' apps, MacGap on the other hand needs to be compiled with Xcode just like any other mac app and can be modified/extended to use any native library/functionality one wishes to use. Ultimately it's simply a starter project with an API built in to communicate from js to obj-c via a webview. It's unclear how this no longer makes it not a 'native app'. If that's the case the Mac App store is not a native app either since it uses a webview i.e. html, css, js for the store's content
- rnovak 12y agoNative means code is compiled down to binary and run on the bare hardware. This project says it is explicitly run through the WebView, which is a HTML interpreter/renderer - by definition not native. Where did he said the App Store is native? He didn't. He said claiming interpreted apps are native is a terrible idea and false advertising, which it is.
- tjsix 12y agoSo by your definition, any app that contains any code that requires any type of interpreter is no longer a native app? That's just silly. Nowhere does it say that it has to be run exclusively through the webview using only HTML/JS. Only the javascript API is run through the webview. Whether you choose to use only a webview is up to you, you're not limited to strictly HTML like many other similar solutions.
- rnovak 12y agoMy definition of a native app excludes applications that are mere wrappers for 90% of the application code. If the majority of an application is written in JS/HTML/CSS, which I have no problem with, then don't call it native, because it's not. Why would you use a tool if you're not going to make extensive use of it? It may not say that it has to be run exclusively through webview, but if you're only putting 2% of the application through it, why wouldn't you just configure your own web view control? A native application means the entire application executes on barebones hardware. Web Browers are native, since they don't actually comprise of the web-pages that they run, the web browser is limited to the actual native code that interprets, executes, and renders the HTML/JS/CSS.
- EGreg 12y agoIt is a native app, in that it can be launched and run natively on the host environment. Whether it uses GTK, X11, Cocoa or HTML to render its views, it might contain quite a bit of Objective C code. Besides, not every routine needs to be blazing fast and written in Assembly.
- juliangregorian 12y agoIt's a native window container and plumbing to run an HTML web page. Nobody except you considers that a native app.
- EGreg 12y agoThe commenter above does :)
- teleclimber 12y agoTotally agree. What matters most in my opinion is the user's experience. Does the app blend in with the underlying OS? Things like context menus, filesystem access, appearance on taskbars, etc.. are what determines whether it's "native" or not. The technology used to deliver that experience is utterly immaterial so long as the experience is there.
- trose 12y agoSomebody better call up the Slack devs and let them know they're doing something terrible. It's really going to hurt their image.
- dilap 12y agoI know you're being sarcastic, but I hate the Slack mac app. It's very annoying to me to see claims they have a "native" app when it's a shitty web wrapper. I'm sure the GP and I are not the only two people who feel this way.
- joshkpeterson 12y agoI really think people should give their reasoning behind such opinions or threads like this become useless flame wars.