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 8 years ago.
Improve this question
I'm working to learn some good frameworks (o set of frameworks/languages) for to build some RIA java based, not exclusively business-oriented ones. I'm at my start so excuse me for so general question.
Actually I've spent some time on GWT, and i like that philosophy. Problem is Java 8; I'm working with Java 8, and there is an incompatibility with GWT; I know is only matter of time to be resolved, but in the meantime i'm working around.
Now, I've understood (?) that GWT is the best for to build client-side RIAs but lack somewhere in the server-side aspect, and it probably need to be reinforced in some way. But what's means "reinforcing"? what can be the "good partner" server-side for GWT?
I've gived a look at Vaadin, but i don't like so much that philosophy: the Gwt idea to spare the elaboration load from server and client is winning, in my opinion, while in Vaadin, if i don't understand wrong, the elaboration is almost only server-side.
Now the question is: what is the best 2014 practice road?
Only GWT ? GWT + server side add on's (and what addons?)?
Vaadin? Or something different?
I think you must consider what you wish to do.
If you wish to stay with java, then a GWT based solution is great.
GWT gives you many features and not much hassle with javascript.
If you need only client side application with not much server interaction this is a good choice.
Of course you then need a server-part of your project.
Vaadin commes in, when you anyway have a server side solution,
with much businesslogic, datalayers, background jobs etc. etc.
Or when you don't wish to write GWT stuff yourself. (You still can if needed)
Your business logic is running on server side, the communication with the webbrowser is secured agains usual web exploits/attacks.
(You would have to implement them yourself when using a own or xml/json based protocol)
Vaadin integrates client+serverside, without the need to hassle with GTW or Javascript.
So:
For projects with no (or not much) server side code (Business layer)
go for GWT
For all else go Vaadin
In my current project (trading terminal) we are using GWT with interop with server side over web sockets. It is fast, tiny and allow interact in both directions.
We used custom protocol but you can use Protobuf for serialization/deserialization on both sides. Web sockets are not supported on old browsers.
Related
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 5 years ago.
Improve this question
I'm starting a new Spring Boot web application and I need to make a choice about how to implement front-end.
I'm really comfortable with Thymeleaf templating framework that I used in several projects, but I'm evaluating Angular (v2) as a possible alternative.
I'm quite new to client-side MVC frameworks and I'd like to understand if there are some guidelines to decide which option is the best for a web project.
I've read a lot of posts and tutorials about this, but they all seem to describe personal opinions or to be just coding experiments...
Are there some application requirements that objectively suggest to use a client-side approach instead of a server-side implementation?
Is it possible and effective to use both the technologies together?
Thymeleaf and AngularJS are not mutually exclusive. You can certainly use them together, depending on what you are trying to accomplish. If you are all in on writing a single-page dynamic web application, Thymeleaf is probably unnecessary.
Speaking to your question about client side frameworks vs. server-side ones, I'm an Enterprise Software Engineer, so I am not creating commercial software and my priority is less about how pretty it looks (a little Bootstrap does the trick) and more about stability, browser compatibility (even with older browsers), and maintainability. I personally avoid the single page, dynamic web applications because I find the code base more difficult to manage in non-trivial applications; a large Javascript code base can be a bear, in my opinion. Building up my pages primarily on the server side provides me with better debugging capabilities (Java is going to give you a lot of compile time help that you don't get with Javascript) and easier logging. I do use javascript (mostly just jquery) on the client side, but generally my web apps are built to degrade gracefully if the user has javascript turned off. Again, these are internal, utilitarian, applications to support the business. I don't have time to write a whole thesis on the subject and there are plenty of nuances that I'm not covering, but hopefully this is useful.
If you need your web app to act more like a mobile or desktop application, then single-page dynamic web app using a framework like AngularJS is one way to go.
The choice isn't whether to use one JavaScript library or Thymeleaf, that would be an artificial constraint you created, they are both different animals. Thymeleaf is for templating, JQuery is a client side library for making dynamic pages. It would make more sense to choose between templating libraries or choosing between JavaScript libraries, but both can go nicely together.
In general, your templating should not affect your JavaScript code, some people do template their Javascript code, but IMHO this is a terrible idea. Instead use Templating to replace tag attributes in HTML, and Javascript for making your website dynamic with whatever library you choose.
I'm not sure what you mean by
client-side approah instead of a server-side implementation
But what I see nowadays are 2 different approaches, creating Microservies VS Monolith web application. If you develop your website entirely in Thymeleaf you will not make it very reusable. Netflix, Amazon, Uber etc. all create services (sometimes called micro-services) which are reused throughout the organisation via a REST API.
If you only have a website implemented in Thymeleaf it will not be possible for another application (think mobile) to access any services created by your application, whereas if you create a REST API for your app then you can keep reusing your server back-end for when you need to make a mobile app, or another web app with similar requirements.
Of course if your services are not going to be re-used this might not matter to you and you might be very proficient in doing things a certain way albeit not being the most reusable, of course we are not always creating the next Amazon. But I still believe it is good idea to follow best practices, even if its just to get better at doing things a certain way.
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'm building a REST web server and I need to choose a UI framework which would work well with Java ee 6 REST web services. I want the UI to be very efficient and have all the AJAX and JQuery capabilities like loading the data from the server without refreshing the page. New data gets added often so I need the UI to display new data every 3-5 seconds ... drag and drop feature etc.
I've been reading up on GWT and here are my questions:
GWT compiles the Java code to Javascript right ? Obviously Javascript is not good for SEO but does using GWT makes it Google SEO friendly ?
Performance vise - is GWT quicker then using Javascript tools like redis, JQueryUI or AJAX or one of many other javascript UI frameworks or they all are the same ?
GWT also supports server side coding in the GWT project itself correct ? Is there a benefit of writing server side code in the GWT project then building it in a different project or is this a silly question and it does not really matter where I write the server side code ?
GWT compiles the Java code to Javascript right ? Obviously Javascript is not good for SEO but does using GWT makes it Google SEO friendly ?
I think that there is no solution, because there is no problem. With GWT you can make web applications not web pages.
Performance vise - is GWT quicker then using Javascript tools like redis, JQueryUI or AJAX or one of many other javascript UI frameworks or they all are the same ?
There are many aspect of the performance of GWT projects.
Loading time of you application.
Divide your application in logical parts, when a user wants to a particular part of the application, it should load only the required resources only. its other parts will loaded on demand. So, More or less a design issue you will have to deal/manage with.
Rendering time for widgets, views, etc.
GWT creates its own DOM. In the JQuery usage existing HTML and is enhanced upon.
Data transfer time to/from server and client.
No significant difference.
GWT also supports server side coding in the GWT project itself correct ? Is there a benefit of writing server side code in the GWT project then building it in a different project or is this a silly question and it does not really matter where I write the server side code ?
GWT support many ways to send/receive data from/to server. This does not force you to write your server side code in your GWT project itself. But, If you choose so, you will have the shared model classed and other utility classes in your reach on both client and server. You can write your code in a defferent project too, But in that case, you will have to implement some way to manage the share code(such as, build tools).
The Biggest gain:
With GWT, you can build your applications using a real object-oriented language and take advantage of Java tools like Eclipse that are already available.
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 8 years ago.
Improve this question
I want to start to make a chat client that runs in web browsers, upon a colleges requests. Its my first time doing something like this, so i made some research about this mostly about HTML5. I did research on the platform itself, how fast and how used it is, but my most important factor was: mobile support
I plan to develop this chat for a long while for experience because, as a coder/programmer I am still inexperienced.So i was thinking in the future as well. i have a forum community with pretty limited chat access. I want to change that as well, and as an extra include mobile support.
i researched Flash, java and HTML5, the two most obvious choice in web applications, and pretty much the new comer HTML5.
Flash is more widely used as web app(at least what i saw and found.), and its more designer oriented than programmer, but many chats are written in this, and are used. but there is no mobile support for it, to my knowledge. thats hinders my future plans.
Java, is a robust programming language, and saw a few webchats in this, but my main issue with this is performance: its much slower than flash. But at least there is mobile support, at least the android mobiles.
as for HTML5....its pretty much still a child, not all web browsers support it fully but the major ones support web socket already, except IE9. and IE9 is the most used web browser, sadly. And i cant find any support for it on mobiles yet.
And i don't know any other platforms out there in the Internet that could do the same as the above three, but i'm open.
So my question is: Which is the best platform for writing a webchat, that lest me do mobile support at a latter stage?
No, the correct answer is: Understand which method is quick to deploy, cost-effective and easy to learn. You'll need to integrate languages to make this work. HTML 5 is the latest and greatest, that's one. JAVA ~ still in demand on the Android side..learn it..
Flash is dying..don't learn that.
Windows ~ .NET..don't count this out...Microsoft is planning on coming out with a mobile platform...this is still good to learn..always learn a language that's going to give you job opportunities in the future.
You cannot write a chat in HTML 5 alone (because it operates on the client and there needs to be server code), you would need PHP or JSP for that.
I wouldn't use flash except if you are already very proficient in it because:
it needs an extra plugin
it frequently blocks or crashes some browsers
I think it is difficult to develop and I am not sure if the development software is free
So my choice would be Java Applet by default. It needs an extra plugin but it is much more stable than flash and you need it for many applications anyways but it has so much functionality that is very easy to make a chat with it.
P.S.: Java's speed is absolutely no problem for a chat. Java is maybe 10% behind C++ depending on the application but we are talking about languages like Flash or PHP so Java is not slower but it doesn't matter anyways because a chat has next to no resource requirements.
The correct answer is: it depends. You can implement such a program using many technologies. Each of these technologies have different characteristics and pros and cons but you have mentioned that this is going to be made for a university task. This way i recommend you to choose HTML5, this is a quite new technology, i think it worths it to have a little experience in that!
If you want to have the least work with this project, you should use java.
This is MY opinion.
You should have a look at nodejs:
http://nodejs.org/
Also the socket.io module for nodejs which allows you to use websockets as a transport mechanism for capable browsers and provides fallback methods for older browsers:
http://socket.io/
There's a node and socket.io chat tutorial which might be helpful and a working chat demo based on node (though I couldn't see any reference to socket.io when I reviewed the code).
I would not discount using Flash. It is still an industry standard in web development. It is way faster than a Java applet, but you are right, Java is not going anywhere. Flash allows you to deploy your project to the web, stand alone application on Mac and PC, and on mobile.
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 9 years ago.
Improve this question
What's the best method for performance testing Flex applications with a BlazeDS/Java severs backend. We're looking at JMeter but can it be used with the amf the protocol at a more sophisticated level where values in a request can be manipulated?
My Company (UBIK-INGENIERIE) distributes a commercial Flex/AMF Apache JMeter plugin.
You can easily record, variabilize and replay FLEX/AMF based application with standard knowledge of Apache JMeter.
See a tutorial on it:
Performance testing Flex applications
https://www.ubik-ingenierie.com/blog/load-testing-flex-with-jmeter-made-easy/
https://ubikloadpack.com
We are having the same issue. I will definitely look into www.gorillalogic.com for our site.
Another option (which we overlooked) was choosing LiveCycle Data Services ES2 instead of BlazeDS. While BlazeDS met our functional needs, LiveCycle comes with a Load/Stress tool... something that we really could have used.
Here is the comparison chart:
http://www.adobe.com/products/livecycle/dataservices/compare.html
Try Neoload
http://www.neotys.com/
(haven't checked it yet myself to be honnest, but I will do it soon)
The "Java AMF Client" API might help you here. It's a Java API for building and sending AMF requests to the server.
http://opensource.adobe.com/wiki/display/blazeds/Java+AMF+Client
I've also heard good things about Gomez but I believe it's a pay service and will require some overhead to get up and running. But if you're looking for a more comprehensive solution, many people in my company have used it on projects with a Java / BlazeDS backend.
http://www.gomez.com/
Neoload will cover LCDS, BlazeDS, JBoss, WebLogic, WebSphere, PHP, .NET
We chose it as our tool for testing a Flex app after looking at several options.
You can alter the requests and pass in any variables you like. Very easy to use but it's not free.
I have tried both NeoLoad and LoadRunner. We had more success with LoadRunner. The only problem was that we had to manipulate the LoadRunner configuration of the generators (including the machine we scripted with in vugen) to allow enough memory to handle the massive requests that Flex made. We were able to run far fewer vusers on generators that tests Flex than those that tested http since each vuser used more memory. It was about a 10:1 ratio or fewer.
Currently, there is no perfect solution for amf encode/decode in JMeter.
Something you can try:
Find a programmer (good at Java) develop JMeter plugin for amf
encode/decode, according to our experience, it is not hard and our
plugin works fine in the following projects. the plugin should be
able to decode AMF request when you record request by proxy and easy
to customize the parameters within the request.
Use the charles record the amf request, and attach the data package
in JMeter http sampler. it works when the app is not complex.
Use loadrunner or other commercial software if you can afford.
The best answer for automated testing of Flex application is FlexMonkey - www.gorillalogic.com
The tool is open sourced, can be used in CI environments, has over 5,000 users and is supported by Gorilla Logic (Jave, Flex and mobile development consultants).
Check it out and if you would like more information or a demo, let me know.
Chad S.
Gorilla Logic
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 9 years ago.
Improve this question
I developed in ASP.NET 2.0 for some time, and for slightly less time in Java/Spring/Hibernate. Right now I start developing new web-service and am confused with the choice of:
.NET WCF 3.5 versus Java/Metro.
From one side, WCF seems like a brilliantly developed solution, a masterpiece of software frameworks, with all the support for functional languages, easy wizards, simple architecture. The downside is that it seems to be running on Windows only (Mono doesn't support WCF) and doesn't integrate so beautifully with Ruby on Rails (through JRuby as Java does).
And Java seems really outdated -- no operator overloading or generic arrays?!
So, my main question is: would anyone here start a new project using Java or is it just a dying language for legacy software?
PS. Both performance and database connectivity are major priorities so that leaves slow Perl, Ruby, or Python and database-unfriendly C++ out of the question.
PPS. For presentation layer I'm using Ruby on Rails.
If you are building a Rails application, JRuby on Glassfish is a winning combination. I have five Rails apps deployed to Glassfish and I haven't had any problems so far. I have been impressed with the performance and deployment was super easy.
Lots of activity in the Java world. I talk to many customers deploying new projects in Java. I also see lots of activity in JRuby and other dynamic languages. Take a look at the Tiobe Index for a more :
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
As for Metro, on GlassFish, you can call Java libraries from dynamic languages (and vice-versa), so Project Metro with Java, JRuby, etc, is an option.
John Clingan,
GlassFish Group Product Manager
your observation is quite biased i think. the main thing is need. do you require generic arrays for everything or you can do all the thing efficiently without the help of generic arrays ... :) and Java is not outdated .. it is actually a GIANT . a v. big GIANT . it depends on your project how you are going to do it manage it and what services you are going to run as you yourself said abt the ROR . give a shot on Java you will surely live in it :)
I would guess that both suggestions fit your needs equally good. So when you are more familiar with the .NET tools and libraries you should stick to that since there is not much value in learning two things that do (about) the same. Specially when those things are as complex.