Seam app with JBoss 'minimal' Config? - performance

I'd like to improve the performance of my Seam apps and JBoss appserver, particularly by removing things that aren't necessary in the standard configuration. Ideally, I'd like to be able to run it using the "minimal" profile. Can anyone give me any guidance as to what is needed to run a Seam app using "minimal"? Here are the kind of things my app requires:
JPA, using Hibernate with a PostgreSQL backend
EJB3
JSF (RichFaces/Facelets)
E-mail, eventually, although not required at this particular moment
I'll be developing my app using JBoss Tools on Eclipse, so I would also need anything that is required by the tools for development and deployment. I've found that the default configuration just has too many additional components and features installed by default, and that greatly affects performance when I'm trying to develop. Any help you can give would be great! Thanks!

If you want to improve performance of Seam then you should utilize the functionality in Seam to do that.
If you create a minimal setup of JBoss, that mostly improves the startup time.
If you are interested in slimming JBoss for Seam, you can have a look here
This should cover JBoss 4.x and 5.x.
If you want to speed up your Seam apps, you should learn to use #ByPassinterceptors and utilize #Factory and #Unwrap more.
Dan Allen has a great 2 part post that covers how you can speed up your Seam apps if you are using JSF. You can find the articles here
For development
If you really want to boost development speed, you should definitely use JRebel.
This prevents so many restarts and hooks into the JVM directly to hot-deploy even your EJB's(!).
#Arbi has a great post that shows how you can install JRebel here
This should be a good start....

If you can't justify JRebel's cost try out FakeReplace
http://code.google.com/p/fakereplace/
It's not as reliable as JRebel, but it works for the majority of code changes.

Related

Best practices to manage Debug and Release versions of an application using Nativescript?

I am developing a Nativescript application which makes numerous server calls for various services. The test and production URLs for these calls are different and while switching back and forth between the Debug and Release version I might miss or mess something up (by accidentally using a production URL for debug app). I wanted to know if there are any best practices regarding this aspect of App publishing? I couldn't find any specific answer regarding my question on the internet and the closest thing I found were these article for ReactNative apps:
http://www.multunus.com/blog/2016/06/automated-environment-management-react-native-ios/
http://blog.carbonfive.com/2016/09/29/setting-up-react-native-build-environments-using-nativemodules/
If someone can guide me on this specific to Nativescript application, I would really appreciate it.
Thanks.
You can try use this https://www.npmjs.com/package/nativescript-hook-debug-production
when you are trying to debug build it will do filename.debug.extension
or when production then from filename.production.extension to filename.extension so inside code, you can require or link to filename.extension

Can we compare saiku with Pentaho Analyzer?

I'm currently in an internship and i have to create a whole BI application.
I think i'll use pentaho, and I have to use just open source component.
I know that Pentaho Analyzer is not free
My question is: Is saiku an equivalent of analyzer?
If yes, can I use it with pentaho instead of analyzer?
thks
I'm the developer of Pivot4J project and want to share my (subjective) opinion on the subject.
First, as though you righteously assumed Pivot4J to be more of an API than an application, it does not always mean you need to write lot of code to use it.
We also have a Pentaho BI plugin which does not require any coding and has comparable features to Saiku plugin, though it's targeted toward the yet unreleased Pentaho 5.0 platform.
And our sample application provides most of the functionalities that JPivot web application has, even though it lacks a data source configuration feature which will be soon to be fixed.
Compared to Saiku, I think each project has its own advantage in different scenarios.
Saiku has a much lightweight architecture on the client side than our sample application and the plugin, so it can be deployed and embedded virtually anywhere.
While it's not much difficult to create a full REST style analytic application with Pivot4J, our current sample and plugin applications require at least a Servlet container to run and are more difficult to be embeded than Saiku in certain environment.
On the other hand, as Pivot4J is designed to be UI independent API from the start, it could provide more flexibility than Saiku in my opinion to developers when they want to build their own application on top of it, or intend to customize core behaviors of the API.
For example, if you want to use Pivot4J with your own application which is build with ExtJS, DhtmlX, or any other UI toolkits, it'd be much easier to achieve a seamless integration with Pivot4J, as it provides you with convenient abstract extension points to do that.
Finally, if you're familiar with Javascript you might find working with Saiku easier as it delegates most of the UI related works to the client side.
On the other hand, if you're an old school Java developer like me :) you might find our sample application to be easier to understand and work with, as there's virtually no custom script involved and everything is done on the server side with JSF component model.
To conclude, I'd like to say that Pivot4J is not just an API which cannot be used without writing much codes as it already includes quite feature complete Pentaho BI plugin for the upcoming 5.0 release of the platform. And as Pivot4J and Saiku take rather different approach from each other, each has its own strength and advantage which could be leveraged to suit the specific use case.
Yes of course. Both the tools use the same underlying OLAP engine - Mondrian. Saiku is essentially the same as analyzer providing many of the same features - however it has a different architecture which additionally makes it very embeddable and pluggable. Plus Saiku can be used standalone too if you want to.
Check out the demo at dev.analytical-labs.com to see what it can do.
Also for help you wont find many tools with such a great community - hook up with them on Freenode IRC at either ##Pentaho or ##Saiku depending on your questions!
Pentaho is the right choice for OS BI too - Presume you looked at Jaspersoft as well? Worth a look but you'll no doubt realise the features are better in Pentaho.
Have you think about a pure javascript UI to pivot your olap cubes? There is one such component calls WebPivotTable at http://webpivottable.com
Jpivot, saiku and pentaho are all based on olap4j API so that they all need a java server side service. WebPivotTable use AJAX call to xmla service directly so that it can be used to pivot any xmla OLAP server, like mondrian, SSAS, iccube. Since it doesn't tie up with any java back end and also it is pure javascript based, you can easily integrate it into any website or web application.

Would you start a customer's project using JavaFX 2+ for desktop GUI?

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.

What features of Rational Application Developer for WebSphere make you the most productive

I am mainly interested in the 'integration features' between the IDE and the application server.
One example would be GUI editors for various server specific deployment descriptors.
Another example, from the NetBeans IDE integration with GlassFish, is the ability to:
edit a java file that is part of a
web application,
save the file and
see the effect of the change that you
just saved in the browser (without a
bunch of reloading).
Please include a link to any reference to the feature in user docs, if you have it at the tips of your fingers.
Over my years using RAD, the feature I'd recommend everybody to use would be its uninstaller...
Seriously though, RAD's advantage used to be IBM's plugins for Web / J2EE development; over the years, though, the Eclipse community has been making great progress with WTP and JST, so for most J2EE development you should do fine using Eclipse+WTP+JST... which are free (comparing RAD with 5-10K USD licensing fees. Per machine, that is).
One person suggested that the 'Web site navigation' tooling was useful.

Where does Oracle ADF 11g stands among Java EE Frameworks?

This is a two part question:
I would like to know where does Oracle ADF 11g stand as a framework to develop / deploy Web / Java EE Applications as compared to other frameworks.
How much is Oracle ADF being used as a framework to Develop Web Applications.
I am asking from a perspective that whether or not there are good job opportunities as an Oracle ADF Developer and what the future looks like for those holding Oracle ADF skills.
Also as Oracle plans to use ADF as core technology for Fusion Applications, Is it good time to build Oracle ADF skills as a siebel developer? As the future Oracle CRM Applications like ERP, SCM will be based on ADF should developers start building ADF skills. Around when will customers start implementing those applications based on ADF. Will these be available On Premise or mostly On Demand in SaaS way.
We have chosen Oracle ADF in our company for one of our projects. Sadly, this proved to be a big mistake. I personally have used Oracle products, in particular their DB, but as far as fusion middleware is concerned, I would advise you to stay away from it. ADF was by far the worst framework I have ever used as an architect. Some of its features I noticed are: very complex, Oracle just "invents" or forces some development approaches that have been proven as a bad practice by the Java community years ago. ADF is very slow compared to other frameworks. With being slow I mean ADF pages run slow. The reason for this is extremely complex generated html and javascript. You can check this by opening up Firebug and inspecting the generated html...it looks like something from the 90s...Terrible. Not to be overly pedantic, but ADF pages have huge amounts of validation errors causing problems in making them run on all browsers. The architecture of ADF is, in my view, messy. Struts2 for example is a much cleaner framework which makes it very easy to integrate it with 3rd party libraries such jQuery, etc. Oracle advocates ADF as an MVC framework but frankly I failed to see the actual MVC architecture there.
ADF uses its own javascript libraries, which are huge, practically impossible to modify, unoptimized and slow in comparison to others such as jQuery or Prototype. The emerging trends in J2EE are lightweight pluggable frameworks that are easily integrated with other tools such a Spring for managing dependencies, jQuery for scripting, CC for continuous integration. ADF is a heavy-weight tightly-integrated framework with other ORacle tools, which makes it very difficult to use it any other way than Oracle devised.
Not to mention the development tools that you are forced to used when developing ADF - the JDeveloper which is very buggy and crashes regularly. Developing in Eclipse is problematic, because ADF has numerous "specific" files which JDeveloper generates automatically.
All in all...ADF was a huge disappointment for us. We spent months messing with it, when finally our client decided the application was too slow and difficult for them to support it and the cancelled it altogether.
Based on my experience i can only say stay away from it. Choose one of the more supported and architecturally clean solutions such as Struts2 or Spring.
I have used JDeveloper 10 and 11, both with ADF, on two enterprise ADF projects for a prominent defense contractor. I agree that ADF is complex, but disagree that JDev crashes frequently, or that the pages are slow to render.
Now... why ADF? Read Oracle's synopsis below, stating that JDeveloper and ADF make Java EE development more accessible to "business" programmers. While this does not guarantee elegant programs, it does almost certainly guarantee that, when these developers get into trouble with ADF, they will probably be utterly lost and will have little idea how to open the hood and reach inside. Conversely, they would be lost even sooner trying to integrate the current J2EE open-source cornucopia.
THE SERMON
Source: ADF Developer's guide (paraphrased)
"Since the early Java days in the late 1990's , the Jave enterprise platform has grown massively and today is used by a large community of developers. However, the developer community is not homogenous and includes developers who are not expert Java programmers, but are business developers who have core competencies in their industries. As the Java EE platform and community grows, the average programmer skill level is declining.
It's hard to imagine that there is a single developer who understands all aspects of the Java EE platform in depth. The problem to address in Java EE is to provide a technology that empowers developers to build cutting edge web and SOA app's without limiting their agility.
Existing Java frameworks such as Struts, Spring, JSF, EJB, GWT, etc are blankets pulled over areas of complexity that expose simpler controls to work with. Using frameworks, developers no longer work with the java core API's but instead interact with interfaces and services exposed by the framework.
Blah, blah, blah...
What seems a small problem for experienced java developers is another hurdle for business developers who are new to java and EE development. This type of developer may turn to a a single dev environment promising integration of all aspects of app development in a single technology chouice. Developers from a 4GL desktop dev background might be attracted by PLSQL, .NET, Adobe Flash.
An experienced Java developer might see this a a big mistake, but how would those developers know, unless Java too provides a single solution for them? The solution is an end-to-end framework which pulls another blanket over the technologies, one that combines different framewokrs and technologies into a single product that exposes visual and declarative development gestures as it's predominant programming methodology... ADF."
I have been working with ADF since last 6 months, and i realise that ADF is made particularly large application with strong database integration. I haven't seen any other Framework which can provide you with so fast and easy development of database rich applications.
Yes i agree that it have some bugs, but still it works well if you know how to work with it.
My perception of and experience with ADF is that it is a very solid and robust framework (unfortunately, the development tools are not.) I'm not sure there's much competition to it, at least, not from a single framework. ADF itself is really several different frameworks combined over the years into a mostly cohesive product. Now that Oracle owns Java, i really expect (hope) parts/much of ADF finds its way into Java EE-proper so we can maybe see alternative implementations and better development tools. If that were to happen, it'd pretty well solidify ADF's future (as long as Oracle doesn't screw the Java community in the meantime and push them to alternative VM platforms).
If you are already familiar with or want to work with Oracle(-related) products, ADF is what you want. Given the market penetration of Oracle, it's probably a reasonable bet that they'll remain dominant and your skills will remain marketable for years to come. Oracle is spending lots of money and acquiring lots of companies to try to own and retain the enterprise.
The SaaS question, to me, is a little harder to answer. While it does seem to be moving in that direction, it's not clear to me if it's mostly marketing's attempt to give it that push or if business-need is driving it. And there are lots of questions i don't really track such as business trust of the cloud for critical data and reliability.
Short answer:
You developing Enterpise solution, your product vendor is Oracle - ADF is a best choice
You indie developer, your solution is not for enterprise, you not going to use other products in the Oracle stack - ADF is not for you, look for another framework.
Long answer:
If you going to Enterprise, if your general product's stack vendor is Oracle. Your best choise is to go along with ADF. ADF becomes better with each major release. I've started using ADF since 11.1.1.2, had a look at 10.x and now using 12.1.3, while still supporting large enterprise applications on 11.1.1.6.
I see a huge improvement and its really hard to find another product that provide better integration and support for whole Oracle stack.
However, if you quite familiar with other framework or/and not going to use other Oracle products and/or your customers can't afford to pay quite a lot for ADF/Weblogic/DB/ECM etc.. - your best choise is to avoid ADF. Its good for large enterprise solutions.
Yes, in fact actually you can develop using free and limited version of ADF - Essentials, use other app server as tomcat or glassfish, but you'll be better off with the other framework. ADF Essentials is only kickstart to large enterprise world, not a solution for small lightweight application.
Development in ADF is a pain in the heart. For a newcomer, the learning curve is too steep. I wish it could be more like learning dot NET.
From my perspective, learning and constructing a functionality in dot NET takes a quarter of the time to do the same in ADF. Of course, it imbalance reduces as a person learns along, but that's pretty much the scenario for beginners. It's frustrating.
I have been working with ADF since last 3 months, and i can tell you that ADF is a really suitable for situations which is essential to provide fast development process for large enterprise applications with strong database integration.
Compairing to other JavaEE framworks like Spring,
It is extremely complex when fixing bugs becasue of the architechtur of the ADF and lack of dev community relative to Spring. Spring has large development community
around the framework.
It is hard to impliment MVC architecture with the ADF inter component integrations.
Spring Developers have much more reputation and demand compared to ADF developers.
ADF is very slow, heavy-weight, tightly-coupled compared to Spring and integrated framework with Oracle tools.
Hope this will help you to solve your problem and gain your knowledge. Happy coding!!!

Resources