Clay observed that the focus is switching from server-side frameworks
to client-side frameworks. Google Gears (which I realise is going to
be replaced by Web Storage) gave applications the ability to store
data locally. JavaScript has been beefed up in terms of performance
to presumably be competitive with conventional desktop languages.
I'll imagine a couple of steps that could follow this:
1. Browsers start to allow other languages than JavaScript to run
code in web pages, in response to (my imagined) demand from businesses
to allow such code to be distributed as binary.
2. Browsers add yet more features that are traditionally the domain
of desktop apps, e.g., drag and drop between web pages or from native
file managers to web pages, clipboard access, CD/DVD/Blu-Ray burning,
printing, access to areas of the hard drive, managing their own window
positions and sizes.
3. The browser disappears into the OS (see Google Chrome OS), such
that there is no visible difference between running a desktop app and
a web app; the only real difference is that the desktop app can write
to anywhere the user can and requires installation but the web app can
only write to its own storage area or anywhere the user explicitly
gives it access to.
4. OSs allow desktop apps to sandbox themselves like web apps are,
and allow silent installation (java-web-start style) and update of
desktop apps that declare themselves 'sandboxable'.
5. Nobody gives a monkey's whether your app is a desktop or a web app
anymore, the difference is the toolkits you use to create the app
rather than what it can do.
What do you think?
Agreed! The sooner the better. Really surprised it hasn't been solved
by now.
- Stephen
What if...
Javascript and HTML 5 were to morph or were implemented over a
"foundation language", which had a common specification and test suite
across browsers. The "foundation language" could be made for it's
portability and the common building blocks to support higher language
features. Then other languages could be ported to run on the new
foundation. (I.e. in the spirit of the JVM, but only for client-side,
and controlled as a public standard, maybe call it HTML6) Java
suffers from too much control to ever really full fill this need
across platforms. It will only really happen when the entities behind
the browsers do it together. HTML5 seems to be way closer to this
than at any other approach in the past. Maybe the momentum will keep
going?
Adobe seems to get this, they keep writing good stuff that builds on
top of the stuff others offer, along side their own solutions.
Why not client side Ruby, Java, Groovy, Clojure, Scala etc. along side
JavaScript all running on the VBM (virtual browser machine, or keeping
in the spirit of a few of last pod casts you could misinterpret this
as , violent, bm).
This would require way too much coordination between companies all set
on dominating the digital world to really happen. But ahhh, wouldn't
be nice to have client side, write once, in your language of choice,
run on anything that supports a browser.
True dat. You presumably need the community to be skilled in a more
low-level language too. E.g., Python attracts a lot of C programmers,
because/so there are lots of native libraries wrapped to be used in
Python.
Most Java programmers simply don't have the C++ skills, as far as I
have seen, to hack at the JVM itself, for example. I'm sure as good
software engineers we could do it if we needed to, but we'll generally
avoid it if possible.
--
You received this message because you are subscribed to the Google Groups "The Java Posse" group.
To post to this group, send email to java...@googlegroups.com.
To unsubscribe from this group, send email to javaposse+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
The elephant in the room, with regards to moving application onto the web is:What do you do when your train goes through a tunnel?
--
You received this message because you are subscribed to the Google Groups "The Java Posse" group.
To post to this group, send email to java...@googlegroups.com.
To unsubscribe from this group, send email to javaposse+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
In spite of the premises, I agree with you! But to me it's clear that
since fifteen years up to today we've been moving on the IT world by
patches and kludges. Every time that there is just the 1% of problems to
fix (because Java has got it all, since its inception, but there's that
1% missing that creates problem), instead of focusing on fixing that
(which is possible), we declare the thing 'dead' and decide to restart
from scratch. Here we are, now, with JavaScript reinventing the wheel
for the n-th time. Let's go with JQuery and REST; of course, before
resolving all the problems that exist with these approaches, when we'll
get to that infamous 1% somebody will pull another rabbit out of his
hat, and we'll restart from scratch again. This is the cirque du
technologie today. Fortunately, sooner or later, we retire and/or die...
--
Fabrizio Giudici - Java Architect, Project Manager
Tidalwave s.a.s. - "We make Java work. Everywhere."
java.net/blog/fabriziogiudici - www.tidalwave.it/people
Fabrizio...@tidalwave.it
It seems to me that this view of JavaScript comes mainly from people
that have used JavaScript in the past and disliked it due to seeing
lots of badly written code and issues with the DOM API. I've yet to
hear someone that has read the book "JavaScript: The Good Parts" say
they still think JavaScript is a bad language ... unless they dislike
all dynamically typed languages.
--
R. Mark Volkmann
Object Computing, Inc.
I understand that. There are excellent arguments for using both static
and dynamically typed languages. I think we've all heard them by now.
No point rehashing them. People that feel strongly about using
strongly typed languages are not going to like JavaScript.
> I can appreciate many like dynamically
> typed languages. What is annoying at the moment is that people simply
> have no choice. If the scripting engine provided an intermediate
> format that compilers could target then developers could use what they
> prefer.
More choice would be good, but I don't see it happening. Most people
won't use a new browser-supported programming language unless it is
supported by at least IE, Firefox, Chrome and Safari. It's hard to
imagine the groups that control those browsers agreeing on a new
language to support.
I don't see what's so bad about having JavaScript as a compilation target.
> --
> You received this message because you are subscribed to the Google Groups "The Java Posse" group.
> To post to this group, send email to java...@googlegroups.com.
> To unsubscribe from this group, send email to javaposse+...@googlegroups.com.
The real point is that 'real' bytecode has been designed with a specific
purpose, and JavaScript-as-bytecode is being repurposed. But as I said,
the whole web thing has been repurposed. Of cours,e I strongly prefer
things that has been designed for a purpose, rather than things that
have been repurposed... that's why I don't like JavaScript.
As a language, I don't like dynamic stuff (if not by specific things).
And if I have to move away from Java, I really want to see something
newer, not a thing as old as Java.
--
Fabrizio Giudici - Java Architect, Project Manager
Tidalwave s.a.s. - "We make Java work. Everywhere."
java.net/blog/fabriziogiudic thei - www.tidalwave.it/people
Fabrizio...@tidalwave.it
> For me, the main advantage of using a browser for RIA is you don't need to install anything on client machines. However, there are a couple things that always irritate me when I'm doing RIA for clients, as opposed to a traditional application.
>
> Please note that I'm not talking about public web sites, I'm talking about internal applications that are not exposed to the public. So please don't respond 'I wouldn't want this to happen on my browser', it's not going to happen on your browser. You will never see this application, you won't even know it exists.
>
> 1) Disabling navigation/back button functionality. This gets me every time. I NEED to be able to prevent the user from going back a page. No discussion, no 'You should educate the user not to do that'. Taking firefox as an example, you can go back a page in (at least) three ways: backspace, click on the back button, right click on the page. That means I have to somehow prevent the user from doing these three things. And not counting refresh, multiple submits and preventing them from entering a different URL. What is needed is the option to disable navigation. Full stop.
No, you are doing it wrong. This is NOT how a web page is supposed to work, whether on a corporate LAN or via the Internet at large.
I ** HATE ** it when web apps try to get around the fact that they are web apps by playing little tricks like hiding the menu or trying to disable the back button.
I'd suggest if you *really* need to do this, HTML is the wrong tool for the job you are trying to do. Write a real desktop application for god's sake, in Swing for example. Not every problem can be solved by HTML!
Rob
> I'd love to believe it. I'd be somewhat more convinced if there were
> libraries / frameworks out there that let you write a desktop app in
> the form of servlets and templates / static HTML/js/css files, and
> some hooks for app startup, shutdown, and some interaction for the
> very minimal "chrome" (UI elements) on the window edges, and then
> packages it up for you into a single executable which, when run, opens
> a webkit / gecko embedded browser, starts up an internal server, and
> makes it "just work".
>
> Something like iTunes (the music store part runs on HTML, or so I
> hear), or Steam (which is all HTML running on top of an embedded
> webkit).
>
> As far as I know no such tool is available for java, nor for python,
> ruby, or the CLR. Personally I'd say such a desktop environment would
> easily be far nicer to write in than swing, and has the considerable
> advantage that you can share a lot of code between this desktop
> version and a web-based app. You also can use all the latest and
> greatest HTML5 features, because you know exactly what kind of browser
> you end up running on (though this conflicts with the "hey, I can turn
> this into a webapp in a snap" idea).
I think Swing is a pretty great environment for writing desktop apps, but that comes with lots of practice.
I find it highly amusing that people are bemoaning how hard it is to write desktop apps in an HTML browser.
Well DUH. It was never designed for that purpose. It is designed to display marked-up text. Period. Everything else has been bolted on with staples and duct tape.
If you want to write a desktop application, use a desktop application framework like Swing or SWT (in the Java world), or Qt if you want to go mostly-native but a little cross platform. Or if cross platform is not an issue at all, use Cocoa on the Mac and/or .Net on Windows.
I think maybe the reason there's so much effort to turn the browser into something it was never meant to be is that like all humans, people tend to stick with what they know, and don't want to invest the mental energy into learning new frameworks (like Swing) that have already solved all these problems.
Rob
Doing things the current way still leaves you forced to use
JavaScript.
How many people here develop with JavaScript because they really like
and enjoy using JavaScript?
How many people here develop with JavaScript because they have no
other choice?
I wish there was a bytecode which could be targeted by compilers.
To
make that work would require all the browser vendors to agree on that.
There are existing bytecode formats which would be useful to reuse.
That gets into a political problem where both Microsoft and Oracle can
be sue happy and someone using just the bytecode / JIT part of the
platform without taking the rest could lead to upset. I also think the
Browser developers might have misgivings about incorporating such a VM
into their browser (a bit of 'not invented here' syndrome).
It would be great if it happened. I just don't think it will without a
lot of pressure from some big entity.
Maybe that's the reason for some people. However, for many I think the
reason is simply that they want the deployment characteristics of web
apps and also want a rich UI. So we do the best we can with the tools
we have today and hope that HTML 5, CSS 3, ECMAScript 5, JavaScript
libraries (like jQuery), GWT, and so on will make this doable and will
continue to improve.
Reminds me of AxisPanel from [1]:
AxisPanel p = new AxisPanel()
.y().width("100%")
.x(myNorthContentPanel).css("north").q()
.x().width("100%")
.y(myWestContentPanel).css("west").q()
.y(myCenterContentPanel).css("center")
.width("100%").align(0,0).q()
.y(myEastContentPanel).css("east")
.width("100%").align(1,0).q()
.q()
.x(mySouthContentPanel).css("south").q()
.q();
I prefer UiBinder, though I can understand that before that was
available then something like this might look attractive.
- Stephen
[1] http://sonymathew.blogspot.com/2008/12/fluent-dsl-for-rich-ui.html
> You are positing a declaration ("A browser is not a suitable
> environment for writing desktop apps") which is either trivially true
> and thus uninteresting (A browser is obviously not meant for desktop
> apps), or which you haven't backed up (if we funge the definition of
> browser a smidge to include embedded geckos and webkits). I'll
> highlight the parts where you're just making unsupported statements:
>
> On Nov 5, 9:42 pm, matthewjfarw...@gmail.com wrote:
>> The problem is that if I use a browser for writing desktop applications,
>> then I have to jump through a lot of hoops just to get basic stuff like
>> this working, just to prevent a user from doing something silly.
>
> "basic stuff like this" - what are you referring to? The back button?
> An embedded webkit can easily be configured to disable the back button
> and doesn't normally have one in the chrome unless you specifically
> put it there. However, the web model basically dictates that the back
> button should work and should do sensible things, it's part of what
> makes the UI of web apps far superior to non-web based desktop apps -
> as any user interface expert can tell you, undo beats the pants off of
> "are you sure" dialog boxes, or no way to revert, any day.
Uhm, maybe a really bad interface expert would say that. "Back" implies you have navigation state, which is something the user now has to remember. It introduces modality into the human-computer interaction, and that always increases the cognitive load on the user.
Modal apps like Web UIs, Dialog Wizards, etc, are harder to use than non-modal apps. For example, iTunes is a great non-modal app (not the *store*, the player.) I find a song by searching. I double click to play. I can hit stop to stop. There's basically just one UI screen to interact with. No navigating required.
Then when you do go to the store, that introduces the Web paradigm into the mix, and complicates things again. I'm a savvy, experienced computer user and even *I* sometimes get lost when I'm navigating the iTunes store.
I'm not saying there is no place for modality in apps, just that it should be avoided when possible, and it introduces extra complexity. Modal navigation is NOT something a good UI expert would ever recommend, and certainly is no evidence that the Web paradigm is "superior" to desktop apps. Now you're just being silly.
> When deploying to a vanilla browser I still say a webapp is generally
> a far better plan than a swing app, but obviously there are far more
> corner cases where a web app clearly isn't going to work. Something as
> simple as local file interaction isn't even possible, so if you need
> that, clearly "webapp" is not a good direction to take. That goes
> without saying, or, at least, I assumed so. When the case isn't as
> clear, though, web apps win. Just look at the state of IT 2010.
Sure, you have your Web-tools hammer and by god you see nails all around. Even when a screw or a rivet might be the better tool for a particular case.
Rob
> And this is precisely the point that I was trying to make. A browser is not (currently) a suitable environment for writing desktop applications. But the problem is not HTML. HTML is markup, and is perfectly fine for what I need to do.
>
> The problem is that if I use a browser for writing desktop applications, then I have to jump through a lot of hoops just to get basic stuff like this working, just to prevent a user from doing something silly.
>
> You said that 'This is not how a web page is supposed to work'. I agree completely. But this thread is about desktop applications. Not web pages. Two different things.
>
> Speaking from personal experience, the clients we talk to are interested in having web/browser based applications because:
>
> 1) It makes their deployment a lot easier. All they have to deploy is a server. To update their applications, they deploy a new war. That's it.
You could have just as simple a deployment situation with a client-server Swing app, deployed via JNLP. You deploy your app to a single HTTP server, and that's it.
In the simplest case of "pure" client-server, all your business logic is in the client, and your back end is a "dumb" database. You can still use ORM tools like Hibernate to simplify data access.
A 3-tiered model introduces a bit more complexity, but it's not too hard to manage. Your client and server code are now separate, so you have a War and a JNLP bundle to deploy. But the backend can continue to use Hibernate, and the front end can call RESTful web services on the application server, and leave all the business rules on the server.
Rob
Uhm, maybe a really bad interface expert would say that. "Back" implies you have navigation state, which is something the user now has to remember. It introduces modality into the human-computer interaction, and that always increases the cognitive load on the user.
Modal apps like Web UIs, Dialog Wizards, etc, are harder to use than non-modal apps. For example, iTunes is a great non-modal app (not the *store*, the player.) I find a song by searching. I double click to play. I can hit stop to stop. There's basically just one UI screen to interact with. No navigating required.
>
>
> On Fri, Nov 5, 2010 at 3:52 PM, Rob Ross <rob....@gmail.com> wrote:
>
> Uhm, maybe a really bad interface expert would say that. "Back" implies you have navigation state, which is something the user now has to remember. It introduces modality into the human-computer interaction, and that always increases the cognitive load on the user.
>
> That's a nice academic explanation, but I don't think it applies to the real world.
>
> For having been sitting in many, many usability lab sessions behind a one way mirror, I can tell you that the Back metaphor is understood by a staggering amount of users from all backgrounds.
>
> It's actually reaching a point where this metaphor is leaking into non web applications, which is why you see it appear in more and more places (e.g. the Windows File Explorer, most Help systems, Android, etc...).
I think the problem is that because the Web has been so ubiquitous, its navigation model has seeped into the consciousness of millions of programmers and it affects the way they develop even non-web based applications. And once users adopt this navigation model, they need "breadcrumbs" to help find their way back and forth along the "path". The need for breadcrumbs might be a sign that an application could use a re-design. It's like covering up a bad code smell with cologne.
>
> Modal apps like Web UIs, Dialog Wizards, etc, are harder to use than non-modal apps. For example, iTunes is a great non-modal app (not the *store*, the player.) I find a song by searching. I double click to play. I can hit stop to stop. There's basically just one UI screen to interact with. No navigating required.
>
> Interesting example because I have often missed a Back button in iTunes. I'm looking at a play list, I insert a CD, switch to the Library, launch "Import to my library", and now I want to go back to the play list I was at in the beginning... and... which one was it again?
>
> With a Back button, the cognitive dissonance would actually be much lower. It's the perfect illustration of "Don't make me think".
>
> By the way, I think you are misusing the term "modality", which might be why we seem to be in disagreement on this issue.
I'm using it in the simplest possible way to describe a human/computer interaction where the human has to keep a state model in his/her head as the software is used. The simplest example is something like Photoshop, where depending on your current mode (i.e., which tool is selected), clicking an object or using the keyboard can produce vastly different results.
A more modeless example would be a simple text editor. There is no state to keep track of, as you type, your words are recorded. They're all there in front of you at one time (I'll grant the scrolling metaphor introduces some complexity), all the commands you can use to modify your document are scattered all around the periphery of your data, in menus, toolbars, and context-senstive pop-ups, etc.
A typical business web app requires either horizontal or vertical navigation through a conversation or long running transaction, where data is entered or information is assembled in discrete steps. (I'm not talking about general web "surfing" where this is not really a problem.)
When you're on page 3 and suddenly you need to go back to page one to look up something you entered there, so you can come back to page three, then you are experiencing the pain of this kind of model. And each page in the conversation looks different, buttons have moved, menus that applied to one page don't appear in another. A desktop app could be more easily designed to keep all that relevant information "together", either in space or time, and make it easier for the user to keep track of what they are doing.
Rob
> By the way, I think you are misusing the term "modality", which might be why we seem to be in disagreement on this issue.I'm using it in the simplest possible way to describe a human/computer interaction where the human has to keep a state model in his/her head as the software is used.
The simplest example is something like Photoshop, where depending on your current mode (i.e., which tool is selected), clicking an object or using the keyboard can produce vastly different results.
A more modeless example would be a simple text editor.
see here: http://en.wikipedia.org/wiki/User_interface#Modalities_and_modes
specifically
"Heavy use of modes often reduces the usability of a user interface, as the user must expend effort to remember current mode states, and switch between mode states as necessary."
also:
http://en.wikipedia.org/wiki/Mode_(computer_interface)
"An human-machine interface is modal with respect to a given gesture when (1) the current state of the interface is not the user's locus of attention and (2) the interface will execute one among several different responses to the gesture, depending on the system's current state." (Page 42)." - Jeff Raskin
Rob
> --
> You received this message because you are subscribed to the Google Groups "The Java Posse" group.
> To post to this group, send email to java...@googlegroups.com.
> To unsubscribe from this group, send email to javaposse+...@googlegroups.com.
On 11/05/2010 04:14 PM, Carl Jokl wrote:Who has ever said that bytecode must be binary? "Close to machine code" doesn't ever make sense, the Java bytecode isn't.
With all due respect JavaScript is Source Code and not byte code.
Describing JavaScript as bytecode is nonsense.
1) It is not a binary format.
2) It is not close to machine code.
--
Fabrizio Giudici - Java Architect, Project Manager
Tidalwave s.a.s. - "We make Java work. Everywhere."
java.net/blog/fabriziogiudici - www.tidalwave.it/people
Fabrizio...@tidalwave.it
On 11/06/2010 06:03 AM, Cédric Beust ♔ wrote:
Partially agree and partially not. I mean, there are actually a lot of places where back makes sense. I'm extensively using it e.g. in my Android application. But there are cases in which it starts not making sense, for instance when you perform non reversible operation. The "pay" page is a typical example. Note that since nobody can block the back function in a web browser, everybody providing a pay service is forced to print in flashing colors "DO NOT PUSH BACK UNTIL THE OPERATION IS COMPLETE". So, while it makes sense to provide back functions, it also makes sense to disable them at least in some places.
With a Back button, the cognitive dissonance would actually be much lower. It's the perfect illustration of"Don't make me think" <http://www.amazon.com/Think-Common-Sense-Approach-Usability/dp/0789723107>.