Java EE 6 Gets it Right

Rod Johnson

The Java EE 6 proposal (JSR 316) was published today. I believe that this will be the most important revision of the platform since it was released nearly 10 years ago, and that it should be welcomed by users of the technology. Interface21 is happy to be a supporter of this JSR, and I am looking forward to contributing to it.

Java EE (known as J2EE for most of its history) has played a valuable role in creating a market for Java middleware. However, over those 10 years, important issues have emerged with the platform, such as:

  • The need for a Java EE compliant server to be bloated with a range of functionality that is of little interest to the vast majority of users
  • The fact that enterprise requirements have changed since J2EE was envisaged and that a "one size fits all model" is less and less appropriate
  • The fact that enterprise Java has been greatly strengthened by the emergence of frameworks (especially in open source) that make developers more productive and their production applications more efficient and maintainable
  • New challenges such as Ruby on Rails, and even .NET, showing that, in a time of rapid change and innovation, a cosy 2-3 year release cycle imperils the entire platform

Java EE 6 is an important revision of the platform that has the potential to address all of these issues.

It may also have the potential to address another issue: the fact that if EE vendors need to certify against a huge range of functionality that most of their customers will never use, meaning that it's hard for them to keep up with the specs, that it's a challenge to make stable upgrades, and–importantly–that the likelihood of new entrants in the Java EE market is nil. The last point is concerning, as it's not in the interests of users for EE servers to be a cosy franchise for the incumbents. To bear out the difficulty of doing a new platform release: At this point, to my knowledge, BEA is the only one of the market leaders, to be Java EE certified, although the Java EE 5 specification has been final for months. And the most valuable new parts of Java EE 5, such as JPA, were ready in WebLogic for months before the final release, unable to be released in a GA product while issues were resolved around some technologies that most WebLogic users will probably never touch.

Enough of my interpretation: let's go straight to the proposal and hear from the source:

In the past 8 years, the Java EE platform has grown and matured, and is now able to cover a wide range of enterprise and web application development needs. In addition, the Java EE platform has fostered a vibrant community and marketplace for additional technologies, frameworks, and applications that work with the platform. Some of these provide facilities that are missing from the platform. Others provide alternatives to platform facilities. A major theme for this release is to embrace and support those technologies as part of the overall Java EE landscape, while also continuing to simplify the platform to better target a wider range of developers. To that end we propose two goals for this release - extensibility and profiles.

A few years ago, this would have been heresy. I was a heretic at the time, but I never wanted to be a heretic. Java EE is finally taking into account the bigger picture, instead of imagining that it would ever provide a good solution for all user requirements. With Java EE 6, the EE platform is partly reintrepeted as the central point of agreement underpinning a choice of solutions: the fertile earth that lets a thousand flowers bloom. It's been encouraging seeing this kind of bigger picture thinking grow within Sun: consider their embrace of JRuby, and recognition that, like the EE platform, the JVM is the base for an ecosystem rather than being tied to a single language.

It would not be appropriate for the Java EE platform to grow without bound to include all the interesting and useful technologies desired by web and enterprise application developers. Instead, we believe it is desirable to enable more of these technologies to cleanly layer on or plug in to Java EE application servers. By adding more extensibility points and more service provider interfaces, these other technologies can plug in to platform implementations cleanly and efficiently, and be just as easy to use for developers as the facilities that are built into the platform.

Again, great stuff. The fallacy that technologies shipped with the platform were "better integrated" with the server infrastructure than these "interesting and useful technologies" was long used by server vendors to confuse users and prevent innovation. (Fortunately, nearly all of them have long since stopped doing so: for example, consider IBM's part in the certification of Spring on WebSphere).

The key here is innovation. Some technologies naturally progress at different rates: notably, on one hand, server infrastructure and wire protocols (which change fairly slowly and benefit from standardization); as opposed to the "interesting and useful" technologies that sit on top of it that need to change at a way faster rate and which standardization has largely failed with respect to.

The reach of the Java EE platform has become so broad that it has lost some of its original focus. To refocus the Java EE platform on particular classes of developers and applications, we propose the introduction of Java EE platform Profiles. Profiles will reference the Java EE platform, as defined by the JCP process, and may include a subset of Java EE platform technologies, additional JCP technologies not part of the base Java EE platform, or both. In addition to defining the base Java EE platform, this specification will define the rules for referencing Java EE platform technologies in Java EE Profiles.

Profiles are a great step forward. At last, users will have the power to shop around for what they want, rather than what a specification committee thought they wanted, 2 years before the users start building the application. It's high time that a Soviet style command economy was replaced by some healthy competition. To follow on from my previous point: whereas in previous revisions, the EE platform tried to dictate how you built applications a bit like a Soviet Five Year plan, in EE 6 the role of the platform is more like that of the framework of laws in a Western country, that ensure that people can compete and acts freely as individuals, while agreeing on the rules of the game for the advantage of all.

It's clear that users of enterprise Java technologies have already identified a number of profiles. Today's web applications, SOA applications and financial middleware, for example, have quite different requirements of server infrastructure, although different parts of Java EE have value to offer for each of them. In particular, the batch and headless middleware users have been neglected by Java EE thus far; at last, there is hope for them in sight within the potential of Java EE 6.

The use of profiles is one tool to address the ever increasing size of the Java EE platform. It's also the case that some technologies included in the Java EE platform are no longer as relevant as they were when they were introduced to the platform. There needs to be a way to "prune" these technologies from the platform in a careful and orderly way that minimizes the impact to developers using these technologies while allowing the platform to grow even stronger.

I hope that this is followed through. Let's suppose you have a Java EE 5 server (which your vendor may or may not be able to provide you in an acceptable timeframe). You are the proud owner of a product that supports EJB CMP 2.0 and even 1.1. Remember the public instance variables in CMP 1.1?? You can still enjoy them. This is ugly prehistory that deserves to be forgotten, rather than bloating today's products. If there are any applications out there still running on this stuff, they can crawl out the last years of their existence on an older server until someone puts them out of their misery.

It is great to read in the proposal "EJB CMP - effectively replaced by Java Persistence". A big theme about this release is making EE more relevant in the world of 2007, and removing or making optional old failures is a great statement of that, with real practical benefits for users and vendors who bring products to them.

Interface21 is looking forward to working with Sun and the other companies and individuals on the EE 6 umbrella group and related expert groups to make EE 6 as strong a platform as it can be.

As I said, I never wanted to be a heretic. Essentially the vision of J2EE without EJB (which I coauthored with Juergen Hoeller) was not to trash J2EE, but to help it to prosper by being honest about the bad apples in the barrel and the need for standardization to be tempered by innovation. The Java EE 6 proposal seems to allow this to happen, and I am delighted that I can join the congregation. Let me quote from that book, most of which was written almost 4 years ago. Note the emphasis not just on criticizing EJB but stressing that the big picture of J2EE is what really matters:

J2EE is still a relatively young technology. It’s not surprising that it’s imperfect. It’s time to take stock of where it’s worked, and where it hasn’t worked so well, so that we can eliminate the negatives and enjoy the positives. Because J2EE contains a lot, this essentially means identifying the subset of J2EE that delivers most value, along with some supplementary infrastructure we need to harness it most effectively.

You may be wondering, “What’s left of J2EE without EJB?�
The answer is: a great deal. J2EE is much more than EJB. Many J2EE developers believe otherwise, and will tell you so when they see this book on your desk, but a dispassionate analysis of what EJB does, and what J2EE does overall, shows that EJB is only a part of a much bigger and more important picture. J2EE is essentially about standardizing a range of enterprise services, such as naming and directory services (JNDI), transaction management offering a standard API potentially spanning disparate transactional resources (JTS and JTA), connection to legacy systems (JCA), resource pooling, and thread management. The true power of J2EE lies in these services, and this standardization has done great service to the industry.

I believe that supporting Java EE 6, given its aims, is consistent with my position on J2EE, expressed in J2EE without EJB and elsewhere. For example, another central theme of J2EE without EJB is the role that standardization should play and where it's better to have competition among frameworks to foster innovations:

While an open (or at least partially open) specification process is positive, I think one of the biggest advantages of J2EE over .NET is the richness of Java/J2EE open source software…
As we've seen, orthodox wisdom on J2EE architecture is out of step with real-world experience. Some of the J2EE specifications are also, to a lesser extent. I feel that we're at an important crossroads in the evolution of the J2EE platform. It clearly needs to evolve and innovate to survive and prosper. Yet the specification of the fundamental enterprise infrastructure such as JTA, JAXB, JDBC and the Java language itself means that there's scope to innovate on how that infrastructure is accessed without destroying the benefits of a consistent, standard approach to the toughest, low-level problems of enterprise software.

When I wrote those words in 2003, I did not anticipate that the Java EE expert group would eventually use the term "extensibility" to capture the same idea. It's a pleasant surprise.

I believe that the enterprise Java community should welcome Java EE 6, and should welcome Sun's willingness to move with the times and take the choices that will strengthen the enterprise Java platform as a whole. There's a lot of good in J2EE/Java EE, but some of the problems have obscured it. Java EE 6 should change that!

 

13 responses


  1. This is great news, indeed.

    It is not only that these steps would make the Java "ecosystem" more healthy and thus benefit those of us who had somehow started to divert from the "right, standard path" of J2EE. IMHO this also means that JEE has now a real chance to survive (and grow!), now that so many us had started to substitute the word "J2EE" by simply "Java" when describing our work.

    Good Luck.

    Regards,
    Daniel.


  2. Rod,

    You can find the list of Java EE 5 certified app servers on the Sun website [1].
    And I would be remiss of me if I didn't point out that the Oracle Application Server is EE 5 certified and provides excellent support for Spring. See the OracleAS/Spring FAQ [2] and the Oracle & Spring page [3] for details.

    –Shaun

    [1] http://java.sun.com/javaee/overview/compatibility.jsp.
    [2] http://www.oracle.com/technology/tech/java/oc4j/1013/whitepapers/OracleAS_Spring_FAQ.pdf
    [3] http://www.oracle.com/technology/tech/java/spring/index.html


  3. It is a great idea. But we are only at the beginning of that journey.

    And I have a feeling it is not gonna be an easy road to get there.


  4. I applaud the goals of this JSR (more choice, more extensibility) but not the implementation. Profiles are not much of a step forward: they failed in JavaME and they will fail in JavaEE.

    "Profiles" and "layers" are profoundly naïve models of software architecture. Real architectures are graphs of interdependent components, not big fat layers sitting one on top of each other. Just look at the rendition of any Spring XML file in SpringIDE!

    JavaEE should be based on the "à la carte" model, not the "set meal" model. Profiles just give us one or two additional Set Meals to choose from, versus the single choice we had before. Inevitably there will be situations where none of the profiles fits our requirements exactly, so what are we to do? We must either forget about some of our requirements, or introduce bloat by going up to the next layer in the hierarchy.

    To do this right, the natural technology to leverage is obviously JSR 291, but regrettably the JSR 316 documents fail to make any reference to it.


  5. Neil

    It depends on how profiles are used.

    JavaEE should be based on the "à la carte" model, not the "set meal" model. Profiles just give us one or two additional Set Meals to choose from, versus the single choice we had before.

    This is exactly what I've been arguing for years. It's still not clear to me whether profiles will be fixed (web profile, whatever else profile) or it will be possible to define new profiles. I will certainly be arguing for the latter, which I think will provide an ideal balance of standardization and agility to meet customer demands.

    To do this right, the natural technology to leverage is obviously JSR 291, but regrettably the JSR 316 documents fail to make any reference to it.

    Again, as you can see from Spring OSGi etc, we completely agree. I will certainly be raising the intersection with OSGi in the EE6 Expert Group.
    Rgds
    Rod


  6. Hi Rod,
    Thanks for the insightful post! What do you think will be "the thing" that will draw / convince folks to move to Java EE 6? There's a lot of apps written still using J2EE 1.4 and the Spring / Hibernate stack, and migrating platforms is not always seen as delivering ROI if "what we've got works". Seeing the rate of both implementation and adoption of JEE 5, do you think there will be a "gotta have" item in JEE 6 that isn't available already?

    Thanks,
    Jim Bethancourt
    Houston JUG President


  7. Jim

    Thanks for the insightful post! What do you think will be "the thing" that will draw / convince folks to move to Java EE 6? There's a lot of apps written still using J2EE 1.4 and the Spring / Hibernate stack, and migrating platforms is not always seen as delivering ROI if "what we've got works". Seeing the rate of both implementation and adoption of JEE 5, do you think there will be a "gotta have" item in JEE 6 that isn't available already?

    I think EE6 is a different animal to EE5. EE5 was a big migration challenge (hopefully being the last of the monolithic releases); it was not innovative; and it's hardly surprising that it seems to have largely been greeted with a yawn. EE6, OTOH, makes the platform far more relevant by enabling what people actually want in practice to be within the spirit of the specification. It also makes en equally important switch toward seeing the platform as the base for innovation on top, not essentially a brake on innovation by trying to provide the solution to all problems, even if they have already been better solved elsewhere…

    I don't know when the timescale will be for EE6 adoption, but the fact that it makes a lot of sense technically has to be a good sign.

    Rgds
    Rod


  8. Seeing I21 joining JSR-316 is for me a very important (historic) strategic move which I applaud 100%!!
    Does means we're finally seeing an official convergence of the lightweight enterprise 'movement' and Java EE 'standards' body… this is great news for us (enterprise) Java developers :)


  9. Here, here.

    I think this involvement will be important with all EE Framework designers and implementers.

    Incidentally, I have reported some of topics that were discussed at the BOF special session at SpringONE 2007 in my blog. I agreed with the opinion that while WAR file were relatively painlessly to install from one application server to another vendor's one, EAR are not portable. There are not portable without some repackaging.

    Also I think that CommonJ WorkItemManager and TimerManager should be part of Java EE 6. I also think that they should standardise either BEA ApplicationLifeCycleListener or IBM StartUp Beans. Most enterprise applications need application initialisation code at the investment bank clients that I have built software for.


  10. > To that end we propose two goals for this release - extensibility and profiles.

    Wasn't the original problem with J2EE was that there was too much extensibility? I don't see how proposing more extensibility will heil things.


  11. Jonathan

    I don't think the original problem with J2EE was that there was two much extensibility. I've written two books on this, but I think the problems were things like:
    - it was too complex to author applications
    - some of the ideas frankly didn't work out, such as the ideal of a component model that was inherently remotable, CMP entity beans, the deployment descriptor model…
    - the belief, through Java EE 5, that the specification should contain all the answers, from access to wire protocols up to web frameworks

    Rgds
    Rod


  12. why not surport Chinese?

    �支�中文�


  13. Rod

    Can you give out an idea about the advantages of including Spring in Java EE 6 ?

20 trackbacks

Leave a Reply

Quote selected text

buy viagra
generic viagra
buy viagra online
cheap viagra
free viagra
viagra prescription
viagra online stores
viagra online
viagra side effects
viagra for women
order viagra
herbal viagra
viagra for sale
discount viagra
viagra sale
viagra uk
natural viagra
viagra without prescription
buy cheap viagra
female viagra
cheapest viagra prices
buy generic viagra
cheap generic viagra
free viagra sample
viagra canada
try viagra for free
viagra pills
side effects of viagra
order viagra online
viagra 6 free samples
viagra alternative
viagra on line
cialis vs viagra
purchase viagra online
can viagra causes legs to ache
what is generic viagra
buying viagra online
buy viagra meds online
viagra no prescription
buy viagra online 35008
viagra soft tabs
viagra dosage
low cost viagra
buy viagra cheap
viagra uterine thickness
viagra alternatives
viagra vs cialis
viagra samples
online viagra
viagra over the counter
viagra from india
viagra lawyers
buy viagra now
viagra stories
buy viagra on line
viagra attorneys
viagra mexico
viagra free trial
canadian viagra
viagra prices
buy viagra australia
viagra covered by insurance
viagra substitute
splitting viagra
viagra patent
free sample prescription for viagra
viagra oral jelly
viagra reviews
viagra jokes
womens viagra
viagra pharmacy
viagra 100mg
cialis levia and viagra
legal viagra
fda on viagra
over the counter viagra
viagra pill
viagra generic
generic name of viagra
viagra overnight
buying viagra
cheap herbal viagra
cheapest viagra
viagra blood pressure
viagra cheap
viagra sample
viagra overdose
prescription for viagra
effects of viagra on women
generic viagra india
pfizer viagra
mail order viagra
viagra buy
viagra and cialis
u 3312 viagra cialis
cialis viagra
what does viagra do to females
ladies viagra
buy online viagra
buy viagra per pill
free sites computer search viagra find
on viagra
viagra women
online viagra store
cuddle chemical viagra boosts performance
viagra patent pfizer
viagra boosts chemical cuddle performance
viagra facts
viagra from usa
bad side effects of viagra
buy viagra order viagra
free viagra samples
viagra online cheap
viagra fuerteventura market
free sample viagra
no prescription viagra
best price for generic viagra
viagra and alcohol
viagra free pills
what is viagra
viagra price
viagra cialis
order 50mg viagra
viagra side affects
viagra potenzmittel
impotence viagra
can women take viagra
viagra cialis levitra
buy cheap viagra online uk
viagra experiences
viagra results
viagra low cost
order cheap viagra fas
viagra versus cialis
non prescription viagra
free trial of viagra
purchase viagra
viagra effekter biverkningar
herbal viagra australia
viagra generic brand
buy viagra ups
low cost viagra online
viagra 50 mg
viagra testosterone
recreational viagra use
viagra viagra
viagra times
where to buy viagra
buy viagra onli
generic viagra mexico
viagra commercial
viagra boosts chemical cuddle
viagra attorney ohio
gernic viagra
buy viagra pill
uk viagra sales
viagra online uk
mexico pharmacy generic viagra
herbal v viagra study
viagra and discovery
drinking and viagra
songs about viagra
viagra natural
viagra effects on women
viagra fuerteventura
generic viagra overnight
viagra forum
viagra sverige
death by viagra
cheapest viagra in uk
mexican viagra
viagra sales
uprima cialis viagra
viagra faq
discounted viagra
buy viagra online australia
generic viagra pill
buy viagra uk
side effects from viagra
viagra no prior prescription
viagra cartoon
viagra lawyer columbus
viagra blindness
buy viagra online inu
viagra effects
viagra as ergogenic aid
find viagra free computer sites
cost of viagra
viagra info
best natural viagra
women viagra
guaranteed cheapest viagra
viagra sex
get viagra
viagra lawyer ohio
viagra attorney columbus
viagra jelly
buy viagra online 35008 buy
viagra free sites computer find
free samples of viagra
cialis super viagra
canada viagra
buy viagra australian
2007 viagra hmo
effects of viagra
is there a female viagra
viagra substitutes
dangers of viagra
cheap viagra online
viagra or cealis
natural alternative to viagra
bought viagra fuerteventura
pharmacy viagra
videos viagra
find sites computer shop viagra free
acheter du viagra
cialis v s viagra
viagra sales uk
buy sublingual viagra online
viagra free sample
fake viagra
viagra for woman
does viagra work
order discount viagra
viagra st
viagra for cheap
cialis new viagra
best herbal viagra
what does viagra do
viagra next day delivery
buy viagra without prescription
viagra use
viagra litigation
free viagra online
india viagra
buy australian viagra
free viagra samples before buying
discount viagra pills
t 84 viagra
viagra warning
viagra instructions
viagra from canada
viagra free sites computer find search
viagra find sites computer search
sublingual viagra
impotence and viagra
viagra max complaints
vicodin viagra
viagra beneficial side effects
viagra and nitrous oxide
viagra testimonials
apcalis levitra viagra
viagra for men
find viagra free sites computer
cialis versus viagra
discount viagra online
free viagra without prescription
generic viagra overnight delivery
viagra cialis generica
find viagra free sites edinburgh
find viagra free sites
viagra tolerance
generic viagra online
viagra discounts
viagra online no rx comparison
getting viagra in the philippines
money order viagra
viagra australia
viagra find free computer sites pages
viagra price strategy
viagra discount
can viagra cause restless leg syndrome
women and viagra
find sites computer shop viagra search
buy viagra in canada
rate generic viagra
free viagra canadian pharmacy
viagra retail discount
viagra online overnight delivery
soft viagra
viagra online no rx
dog ate viagra tablet any danger
generic viagra cheap
compare viagra
viagra suppositories ivf
viagra vs levitra
qry viagra
buy viagra in uk
discount generic viagra
viagra dosing
viagra illegal phillipines
viagra bon marche
viagra free samples
viagra 50mg
generisch viagra
buy discount viagra online
detumescence priapism viagra
q viagra meta
harm of expired viagra
viagra news edinburgh comment moo
viagra ad
viagra experience
viagra sideffects
viagra type drugs
viagra works
viagra online shop in uk
viagra paypal
viagra pay with paypal
buying viagra online uk
rapid tabs viagra
is viagra from india safe
cheapest price for viagra
online ed drugs viagra samples package
viagra shelf life
get viagra drug online
diabetes and viagra
viagra overnight delivery
viagra song
viagra sex domination
female viagra cream
viagra purchase online
what is better viagra or levitra
non presciption viagra replacements
adverse side effects of viagra
viagra logo
discount priced viagra
cheap viagra nz
womens viagra
women does viagra work
viagra ingredients
does viagra really work
viagra uk 32
is viagra safe for women
indian viagra
viagra free sites computer find online
mixing vicodin viagra
cialis or viagra
zenerx natural viagra
viagra effect women
edinburgh uk news viagra site search
canadian generic viagra
prescription free viagra
viagra buy online
viagra herbal substitute
pleasure viagra
where to buy viagra on line
viagra dosage recomendation
buy viagra by pill
free sample of viagra
women taking viagra
viagra purchase
where can i get free viagra
arlene farmer viagra
q viagra search
oyster viagra
ge n eric viagra
viagra federal express
viagra sildenafil citrate information
viagra ads funny
viagra levitra cialis pharmacist perscription drugs
counterfeit viagra
search viagra free sites find computer
mode demploi viagra
discount viagra in the usa
viagra pics
lialda viagra
wild horses viva viagra
viagra equivalent
viagra directions
viagra joke
natural viagra substitutes
viagra generico impotencia
garlic better than viagra
query viagra
effects of viagra mixed with cocaine
buy cheap viagra online
viagra does not work
viagra from canada legitimate
ending viagra use
counterfeit viagra abu dhabi
where to buy viagra online
viagra manufacturer
viagra side effects dangers
viagra users discussion
generic price viagra
buy taladafil viagra
viagra cialis delivery
viagra recreational
buy viagra in bangkok
generic viagra soft tab fast
viagra online no prescription
viagra covered california hmo
viagra forums
viagra 50mg sverige
viagra boosts post cuddle chemical
teenney transplant and viagra
lowest prices viagra
viagra picture funny
viagra for pulmonary hypertension
colleagues viagra
search viagra pages computer find
viagra boots
what to know about viagra jelly
cheap viagra overnight
song viagra in the water
viagra for doggies
viagra free sites computer edinburgh find
q viagra kgs 0 kls 0
viagra cheap no prescription
find search viagra edinburgh free
find viagra free sites edinburgh computer
viagra next day shipment
viagra free trials
free sample viagra vs cialis
online viagra prescriptions
dosage viagra
pn 1 viagra
mail order viagra in uk
viagra information
viagra mail order uk
viagra tutorial
viagra sildenafil citrate
compare cialis and viagra
woman taking viagra
viagra supplement
compare cialis viagra levitra
best price for viagra
niacin works like viagra
from generic india viagra
viagra ads
phentermine viagra
cheapest generic viagra
free samples viagra
newsletter viagra
ordering viagra
cheap generic viagra no script
viagra generique
health net viagra non-formulary cost
viagra on line uk
cialis and viagra together
order pfizer viagra with mastercard
atenolol viagra
buy viagra online without prescription
womans viagra
compare cilalis and viagra
herbal viagra uk
viagra gel
free herbal viagra samples
disp no 19105 viagra
viagra and women
viagra on-line
viagra coverage california
viagra news edinburgh comment search
viagra etc
otc viagra
cialis viagra combo
viagra use of
viagra product strategy
affects of viagra
viagra eyes
viagra and cocaine
viagra best prices
generic viagra canada
viagra cost
mail order for viagra tablets
viagra mail order
viagra edinburgh find search free
generic sample viagra
find viagra free sites search
viagra comparison prices online
viagra jet lag
negative side affects of viagra
habituate viagra
viagra cartoons
semen turns yellow viagra
find viagra free sites computer edinburgh
viagra free sites find computer
cialis viagra sampler
c-ring viagra
next dat delivery generic viagra
gay viagra stories
viagra pay by e-check
viagra price comparison
take cialis and viagra together
overnight viagra
free sample pack of viagra
q viagra
viagra penis size
viagra free sites computer edinburgh
herbal viagra replacements
viagra ejaculation
multiple acts viagra
free viagra sample viagra sample
salis vs viagra
find viagra free sites edinburgh search
q viagra btng search meta
viagra without a prescription
health net viagra
mexico viagra
can i take viagra
edinburgh uk viagra news comment moo
viagra oral sex
viagra usage
viagra wholesale
viagra urethral
find search edinburgh viagra phentermine
buy cheap viagra online u
viagra pictures
tia viagra
viagra in mexico
viagra not working
viagra rss feed
viagra generico
does viagra lower blood pressure
online phamacy viagra
articles of counterfeit viagra
viagra canada satisfaction guarantee
edinburgh search pages viagra report
phillip stricker viagra trial
cialis canada online pharmacy viagra
viagra 50 mg or 100mg
viagra and marijuana
viagra tiajuana
longer sex with viagra
viagra levitra compared
viagra dose
best buy viagra
counterfeit viagra identify four package
viagra pills cod
viagra sales mexico
info on viagra
viagra danger dogs
viagra commercial girl
viagra discussion