Wednesday Sep 28, 2005

Invokedynamic

We’re looking to improve support for dynamically typed languages on the Java platform.

  Tangent : that’s dynamically typed languages - not the increasingly common horrible misnomer dynamic languages (as opposed to static languages, where nothing moves, like hieroglyphics, perhaps?).

A lot of hype has been generated over the .Net VM’s support for multiple programming languages.

Another tangent: I always refer to the .Net VM and not the the CLR. It’s a VM, such things have always been called VMs, and the only reason I can think of for giving it a different name is to confuse people. Confusing people might be useful if you wanted to convince them that you’ve invented something when you actually copied it from somebody else.

More generally, jargon has been used throughout the ages to intimidate and exclude. This is a tradition in every profession: don’t say parameterized type when you can say parametric polymorphism .  

Introducing non-standard terminology is popular in industry, as it prevents people from easily comparing your product to others, so that they aren’t tempted to defect. It’s a common trick used by many large companies throughout the history of computing. For extra credit - what’s a long, complicated term for a B-tree?

The fact is, the .Net VM provides support for all manner of statically-typed, single-inheritance imperative object-oriented languages. It could potentially host C#, or Java, or Oberon or Ada or Modula-3 just fine. In other words, you can program in whatever you want, as long as it is basically C#.

Despite the hype, languages with fundamentally different models won’t work all that well. For example, if you don’t have static type information, you cannot use the VM’s highly tuned dynamic dispatch for method calls, and end up doing your own emulation in software. This is tiresome for the implementor, and more importantly, really slow.

The JVM is not really that different. In fact, a study done by some folks at Aarhus University, part of the culture that invented object-orientation, found that there was no significant difference in difficulty between porting Beta to the JVM or the .Net VM.

So what can we really do to make dynamically typed languages easy to port, and port so they run well, to the JVM?

Last winter we had a meeting with various people who work on such languages - things like Groovy, Perl, Python/Jython.  Our conclusion was that the most practicable thing was to support dynamically typed method invocation at the byte code level.

The new byte code, invokedynamic , is coming to a JSR near  you very soon. I’m forming an expert group which I will chair (because of my deep fondness for standards, committees, meetings and process). This group will get to argue over various fine details of how this instruction should work.

Basically, it will be a lot like invokevirtual (if you don’t know what that is, either open a JVM spec and find out, or stop reading). The big difference is that the verifier won’t insist that the type of the target of the method invocation (the receiver, in Smalltalk speak) be known to support the method being invoked, or that the types of the arguments be known to match the signature of that method. Instead, these checks will be done dynamically.

There will probably be a mechanism for trapping failures (a bit like messageNotUnderstood in Smalltalk).

Does this do everything everyone wants? No, but that is not the point. It isn’t really feasible to accommodate the exact needs of a wide variety of disparate languages. Instead, one should provide a good general purpose primitive, that all these languages can build on.

Some might like the new byte code to support multiple inheritance - but each language has its own multiple inheritance rules, and supporting all of them is hopeless. In most cases, the lookup process for multiple inheritance can be benefit from this primitive.

Dynamic languages with a clean single inheritance semantics like E will be able to use this primitive directly for most calls.

Another problem is calling methods written in Java from a dynamically typed language. Static overloading makes this tedious. Languages may have varying mechanisms for dealing with this, often reminiscent of multiple dispatch. This is way too complicated to put into the VM, but the trap mechanism mentioned above should help implementors deal with that problem relatively efficiently.

All of this should eventually make it the use of dynamically typed languages on the Java platform easy, efficient and common place. That’s a good thing. I’ve long been a fan of such languages (well, not the popular ones; rather, languages like APL, Scheme, Smalltalk and Self; face it, I’m a snob and proud of it).

Why does this matter: I’m convinced these languages have a growing role to play in the practice of computing in the coming years. The extra flexibility of dynamic typing will become more and more important as software evolves.

This is not to say that static type checking is to be avoided. As I indicated in my prior posting about pluggable types, the static-vs-dynamic typechecking wars are pointless; one can eat one’s cake and have (most of it) too.   Invokedynamic is a modest, pragmatic yet very important step that helps the JVM become a hospitable environment for such cake-eating and having.

Comments:

[Trackback] Gilad Bracha has a very interesting post about plans to add some support to the JVM for dynamically typed languages in the form of a invokedynamic byte code. He also talks about how similiar the JVM and .NET JVM are, and the misnomer that is the R...

Posted by Panasonic Youth on September 28, 2005 at 07:33 PM PDT #

Damn! Unill very last moment I hoped invokedynamic would make into Mustang. It was hopeless to expect that because VM change is quite big, but you always look for the best. :-(

Posted by eu on September 29, 2005 at 01:14 AM PDT #

>>> Dynamic languages with a clean single inheritance semantics you mean Dynamically typed languages ?

Posted by 61.17.242.113 on September 29, 2005 at 02:16 AM PDT #

So, if the CLR is a VM, and so should be called the .Net VM, what is JVM? Is it not a VM? If so, be consistent and call it the Java VM. Or are you trying to confuse people? :-)

Posted by AnonymousCoward on September 29, 2005 at 10:27 AM PDT #

[Trackback] Gilad Bracha has blogged on plans to add a new instruction invokedynamic to the java instruction set. The new instruction will allow object methods to be called by name. Dynamically typed languages like python or ruby tend to to do method dispatch...

Posted by The Sidharth Kuruvila Blog on September 30, 2005 at 07:25 AM PDT #

i believe the term `parametric polymorphism' is older than `parametrised type'. Strachey was distinguishing `parametric' polymorphism from several other forms, including `ad hoc' polymorphism, in 1967, in the context of functions, but since the term thus existed, it was subsequently applied to the underlying type systems. i think CLU used it as well.

Posted by D. Bones on September 30, 2005 at 07:27 AM PDT #

Last time I checked Groovy was based on Ruby and far less mature.

JRuby (a ruby implementation targeting the JVM)is Ruby 1.8.2-compatible ( http://jruby.sf.net )

You guys forgot to invite Mr Yukihiro Matsumoto to this party, a little more recognition for his work would be kindly appreciated.

See proceedings of LL2 at: http://ll2.ai.mit.edu (The Ruby Programming Language)

His english may not be perfect, but the design of his language is years ahead of anything else.

Posted by vruz on September 30, 2005 at 10:16 PM PDT #

Basically, it will be a lot like <code>invokevirtual</code> [...]

Some might like the new byte code to support multiple inheritance - but each language has its own multiple inheritance rules, and supporting all of them is hopeless. In most cases, the lookup process for multiple inheritance can be benefit from this primitive.

I sincerely hope that the lookup is performed based only on the method selector, not the inheritance hierarchy. Otherwise <code>invokedynamic</code> will be useless for languages like Smalltalk and E, where selection of a method is independent of where it was inherited from.

Dynamic languages with a clean single inheritance semantics like E will be able to use this primitive directly for most calls.

E uses single delegation, not inheritance. Specifically, it uses a variant of delegation in which the parent object is fixed when the child object is constructed (unlike Self where the parent can be changed dynamically). This is more expressive than inheritance because the parent does not have to be of a statically determined class.

Posted by David Hopwood on October 01, 2005 at 09:07 AM PDT #

I think the CLR is significantly different from a VM and technically far suporior to the JVM. Does the ECMA CLR Not already support dynamic languages and languages that need tailcall support or continuations in ways java doesn't? Does code executed on it not execute a lot faster once the JIT has been completed? Oh, and isn't it an open standard. I always thought Java smelled a lot like to C+@ and is still a massive step back from smalltalk-80.

Posted by Doug Ransom on October 02, 2005 at 07:41 AM PDT #

Is this somehow related to the description in http://java.sun.com/docs/books/vmspec/2nd-edition/Java5-Instructions2.pdf, page 280-282? Does this mean, that this has been already implemented in Sun's 1.5 JVM?

Posted by sma on October 03, 2005 at 09:50 AM PDT #

as a Groovy developer there are some comments I want to say. First Groovy has some syntax in common with Ruby, but is not based on it. The core of Groovy is pure Java.
All Groovy-side method calls are redirected to a MetaClass object at the moment, which does the dispatching using the dynamic type. there is no real difference between caling a Groovy or a Java method from Groovy. Until this point no reflection is needed, but of course we need a String and a Object[] to describe the call. To actually call the method from Java we need Reflection unless we use a special dynamically created class which comes into play after the method is choosen.
To make a call this way is very flexible and allows to exchange methods in the MetaClass object during runtime. But this possibility to exchange the method gives problems with invokedynamic. If invokedynamic first calls the object's method then it is possible a method is used which has been overwritten, or maybe the MetaClass object has a more special method which should be used instead.
So you can see Groovy will not really benefit from invokedynamic. If it would be possible to extend a class with methods, then Groovy may benefit. But still it's not that easy. Vargs and autoboxing are compilerwork, nothing a dynamic language can do at that time. So method dispatching will always require special handling for autoboxing or even coercisons. invokedynamic can't do this. It's always possible it will call a method it should not call.
I think some languages will benefit from invokedynamic, but Groovy will not. But I think these languages can't have any kind of type transformation for a method call besides casts or what java allows with primitives.
Mayvbe I made a big error in may thinking somewhere here, if so please write me.

Posted by blackdrag on October 08, 2005 at 09:48 AM PDT #

Imagine that Microsoft called the CLR a VM. What is the likelihood that many Java people would say, "Hey, It's not a Java VM, Microsoft is only calling it a VM to confuse people" ? It is even plausible that the Sun legal team would have gotten involved. I think the only way Microsoft could avoid this type of criticism is to quit doing software and move into,... you know, trains... or something. Or, people could just calm down and be a bit more thoughtful.

Posted by Dino on October 18, 2005 at 10:24 PM PDT #

Sun is calling JVM JVM to confuse people. Clearly it should have been called JLR (Java Language Runtime). What's up with the MS jabbing anyway? Does Scott go around ensuring that everybody is fulfilling their MS-jabbing quota or something? Heh.

Posted by 203.117.31.241 on October 19, 2005 at 12:38 AM PDT #

Hi Gilad,

From my perspective as a researcher who has studied how to implement first-class generics with minimal changes to the JVM, I would dearly love to see future editions of the JVM support the dynamic addition of methods to classes and interfaces. It would enormously simplify the implementation of polymorphic methods. We could use essentially the same techniques in NextGen to support new polymorphic method instantiations that we use support new generic class instantiations (by dynamically loading lightweight instantiation classes).

The remarks by the Groovy developer suggest that such a feature would also simplify the implementation of dynamically typed languages.

On the subject of language generality in the .NET CLR versus the JVM, my understanding from discussions with Jim Miller and other principals involved in developing the CLR is that the CLR offers only a few features that are missing in the JVM. The only two that I recall are: (i) mandated support for tail-call optimization and (ii) an interface method naming scheme that implicitly includes the interface name as part of the method signature (so two methods with the same explicit signature in different interfaces do not collide if they are in herited by the same class). Of course .NET 2 includes explicit support for generics, but this support is specifically directed at C#. There is no explicit support in CLR for continuations.

P.S. Speaking of non-standard terminology, why doesn't the Java Language Specification use the well-understood and accepted term "receiver" instead of "target" to refer to the primary argument of a (non-static) method call?

Posted by Corky Cartwright on November 22, 2005 at 10:03 PM PST #

Hi Corky, I agree that hotswapping is immensely valuable for all kinds of reasons. I expect us to offer much more support for this in Java 7. As far as tail recursion support in .Net, I understand that using it is rather expensive, because it forces a stack crawl to compute the effective protection domain (which otherwise could be computed lazily). So it has much less real value than one might expect. Finally, of course, I would use "receiver", but the terminology used in the JLS predates my tenure, and I strive to stay consistent with it. I'm not sure that C++ ever used "receiver" either.

Posted by Gilad Bracha on November 29, 2005 at 10:02 PM PST #

http://www.grupowe-pijane-studentki.xpanienki.pl @X@ sutki brunetki @X@ [URL=http://www.biurowy-striptiz.xpanienki.pl]biurowy striptiz[/URL] @X@

Posted by Puszczak on June 05, 2006 at 05:07 AM PDT #

悠悠的云里有淡淡的[url=http://www.boomsound.com.cn]wow gold[/url]诗,淡淡的诗里有绵绵的[url=http://www.guqin.org.cn]world of warcraft gold[/url] 祝福...愿你天天沐浴着源源不断的喜悦和幸福。拥有一份美好的wow gold心情,如拥有一份甜美的world of warcraft gold祝福。愿你健康,愿你快乐,但愿我千万个祝福永远陪伴你左右。

Posted by www on October 12, 2006 at 10:59 PM PDT #

[url=www.eq2goldmarket.com]great site, very informative. [/url]. Thanks!

Posted by Ming on October 16, 2006 at 02:06 PM PDT #

WoW Power Leveling and WoW Gold http://www.gmlvl.com http://www.globalleveling.com

Posted by GMLvL.com on October 29, 2006 at 05:50 PM PST #

Posted by globalleveling on October 29, 2006 at 07:07 PM PST #

Very Strange

Posted by trtrt on November 04, 2006 at 01:06 PM PST #

In plucking out erectile dysfunction by the roots no medicine or drug available in the pharmaceutical world is more powerful than viagra, the anti-impotency medicine. This is so as unlikely to any other anti-impotency medicine Viagra emerges a superb cure for disorders like Priapism, Multiple Sclerosis, Crohn`s disease and brain damage induced by liver failure. Obtain Viagra immediately through viagra online if you are eager to avail yourself of these numerous benefits of Viagra. You can buy viagra online by filling up a few forms and the transaction would take as little as five minutes. Again, if you buy viagra via an online drug store cheap viagra would automatically arrive at your doorstep.

Posted by viagra on November 06, 2006 at 12:33 AM PST #

Even though Phentermine, the weight loss pill has gained recognition worldwide as the best among all diet pills discovered so far and is also credited to be responsible for the sale of 50% diet pill prescriptions worldwide, there are skeptics who still doubt the efficacy of phentermine. Isn’t the fact that Phentermine is an FDA approved medication point towards the authenticity and accuracy of the drug? To further increase your knowledge on cheap phentermine, browse the web and visit a suitable Phentermine website. Phentermine online is the ideal way to procure the drug and after obtaining Phentermine from an authentic online site you can easily administer the drug to your system according to the instructions of your doctor and accelerate your weight loss process. If you buy phentermine online you will get the drug at a relatively cheaper rate. By and large, there is no option remaining for you after you fall in the grip of obesity except holding out your hand to buy phentermine.

Posted by phentermine on November 06, 2006 at 12:34 AM PST #

很多刚刚上路的车主在停车入位时都会发现这么一个事实: [url=http://www.55game.cn]world of warcraft gold[/url]在驾校练得最熟的穿桩和移库,怎么到实际中都用不上了呢?看别人停车,轻松入位而且车正轮直;而自己停车,转向盘左打右打,车子就是弄不顺,好容易停进车位了[url=http://www.comsf.cn]world of warcraft gold[/url],下车一看,自己的车成为了车位的对角线,那叫一个难看。[url=http://www.33game.cn]cheap wow gold[/url] 其实,停车和开车一样[url=http://www.86game.cn]cheap wow gold[/url],都是熟练活儿。只要掌握了一点点技巧,[url=http://www.87game.cn]buy wow gold[/url]再加上经常练习,停车入位将不再困难。

Posted by WOW GOLDxadaa on November 07, 2006 at 09:38 PM PST #

很多刚刚上路的车主在停车入位时都会发现这么一个事实: world of warcraft gold在驾校练得最熟的穿桩和移库,怎么到实际中都用不上了呢?看别人停车,轻松入位而且车正轮直;而自己停车,转向盘左打右打,车子就是弄不顺,好容易停进车位了world of warcraft gold,下车一看,自己的车成为了车位的对角线,那叫一个难看。cheap wow gold 其实,停车和开车一样cheap wow gold,都是熟练活儿。只要掌握了一点点技巧,buy wow gold再加上经常练习,停车入位将不再困难。

Posted by fsdfsdfsrfgrAdministrator on November 07, 2006 at 09:38 PM PST #

hostales barcelona baratos storia dell aereoporto valerio catullo manuale software gatto volpe spa escort napoli schuhmarkt bochum ambrosia ministero papado avinon alle spiele utilizzo logo cono motor tres canto deutsch immobilienfond schneiderei stuttgart puma schuh mestre star wars episodio iii vendetta dei sith online modellino auto d epoca lavorare internet figurino moda kostenlos kreditkarte test cotizacion autoclave beisetzung radevormwald coche recambios rubinetto in vetro salsa genovese date costruzione diga comprar subasta coche rete router professione driver motorola edizione simone it hotel and san nicola arcella hotel monaco baviera kinoprogramm augsburg target new href http subscribe supereva com cgi bin check mail cgi blackthong b gbierofka supereva it c 1 d dce5f3b9f5 hotel sebenico siesta key vacations bombardeo colonia fussball wm boerse hotel step praga psicologia online chi ha paura della matematica cobertizos coche pescare online walter piras it bergamaschi vimercate it hotel emirati arabo osaka osaka ana hotel fiore di fico d india proteina dietas filtro internet apartamento rural case in affitto foresto sparso villa provenza immobilie haus mieten vuelo sevilla oviedo auto truccare motorino truccare balsam schmerz k3 visa fabricar motocicleta deutscher boxer leichter lernen quantum drehbank bild australien wein bovino hotel breast cancer vuelo cuba holguin celula and solar morganti studio amministrativo it guida ai programma tv alojamiento web barato compra vivienda almozara alojamiento barcelona economico servizio packardbell it sta vada italia hotel cultura turismo mexico fauna nueva zelanda hotel perro malaga

Posted by zelanda on November 08, 2006 at 05:13 AM PST #

[URL=http://uomini-completamente-nudi-.stoper54.info]uomini completamente nudi [/URL] [URL=http://foto-ermafrodita.striperrr54.info]foto ermafrodita[/URL] [URL=http://osotes.sciero54.info]osotes[/URL] [URL=http://dilettante-galleria-ragazza.sierr54.info]dilettante galleria ragazza[/URL] [URL=http://jaymes-audree.srandel54.info]jaymes audree[/URL] [URL=http://tutto-fica.stoper54.info]tutto fica[/URL] [URL=http://puttane-in-mutandine.striperrr54.info]puttane in mutandine[/URL] [URL=http://sexy-giornaliste.sciero54.info]sexy giornaliste[/URL] [URL=http://superfighe.sierr54.info]superfighe[/URL] [URL=http://bambola-sex.srandel54.info]bambola sex[/URL] [URL=http://gnocca-nuda.stoper54.info]gnocca nuda[/URL]

Posted by www on November 21, 2006 at 07:01 AM PST #

elenco deceduti bologna spotsylvania court house lapislazuli 夜明け 前 scsi karte mallorca villa rental samsonite computer bags et ses deux amours german passport holder toyota pickup truck parts berufsbekleidung geldtasche mietwagen muenchen flughafen pasta cavolfiore liceo pedagogico gian turco potenza it pcb board in super star 121 radio mopar for sale funktion sicherheitsschuh frankfurt brunch seitenschweller fiat stilo gambo spaces msn bibliothekar ausbildung partner finden aber hotel informationssystem caracas mimesweeper smtp appliance lenses for canon eos digital rebel rialto sant ambrogio invio fax gratis laser grundprinzipien assicurazione motorino online sonderpostenmarkt stuttgart renovieren fliese case in affitto san vito di cadore ancient chinese fighting lexikon zimmerpflanze search and domain 12 bose ii lifestyle series stained glass dolphins galapagos island evolution croazia hotel adesivo for you flagpole mounting brackets krankenkasse auszubildende muscle porn max veneziano possible side effects of depo provera cheap used refurbished laptops golden state warrior basketball full size leather headboard master universitario diritto fallimentare auction electric guitar loris auto usata loris brunelli sparkonto zins morbo site sanihelp msn it vendita carrello appendice auto hotel porro salsomaggiore modellbau kataloge pirat schatzsucher schiff malen antique car salvage yards tierpark hamm seneca sapiente puma impulse cat sandal wer liefern provenienza id host schornstein ahrens james cook wellington valentines umhaengetasche vaude rf filter mtbf wooden geta shoes kinderpflegeschule nuernberg gorizia it zinsen schweiz

Posted by immergruen on November 23, 2006 at 12:59 PM PST #

hi

Posted by backgammon on November 23, 2006 at 11:01 PM PST #

http://www.SexToySex.com/lesbian-strap-on lesbian store
http://www.SexToySex.com/toys-bdsm bondage restraints
http://www.SexToySex.com/gaysextoy-store Butt Plugs
http://vod.sextoytv.com/index.k?a=gaysextoy-store porno gay
http://vod.sextoytv.com/index.k?a=toys-bdsm Bondage Porn
http://vod.sextoytv.com/index.php?a=lesbian-strap-on Lesbian Porn

Posted by discount sex toys on November 30, 2006 at 04:27 AM PST #

great

Posted by backgammon on December 03, 2006 at 03:37 PM PST #

prodigiosamente americano spogliarello caldissimo piede studentessa cowgirl sex dana eros schioccare tenere in cucina bisessuale moglie culo fregna bagnata bollente stronza slinguate foto

Posted by olo on January 05, 2007 at 02:06 PM PST #

[url=http://www.powerlevelings.com/]wow power leveling[/url] buy euro gold wow wow gold--buy cheap wow gold,sell wow gold.welcome to buy cheap wow gold--wow power leveling cheap, easy, wow gold purchasing.World of Warcraft,wow gold Super ... We can have your wow gold,buy wow gold,wow gold game,world of warcraft gold, wow Gold Cheap wow, Cheap wow gold,world of warcraft gold deal,Cheap WOW Gold wow power leveling ... Welcome to our website for you World of Warcraft Gold,Wow Gold,Cheap World of Warcraft Gold,wow gold,buy cheap wow gold,real wow gold,sell wow gold, ... Here wow gold of 1000 gold at $68.99-$80.99,World Of Warcraft Gold,[url=http://www.powerlevelings.com/]power leveling[/url]

Posted by xiaonan on January 06, 2007 at 12:46 AM PST #

[URL=http://www.powerlevelings.com/]wow power leveling[/URL] buy euro gold wow wow gold--buy cheap wow gold,sell wow gold.welcome to buy cheap wow gold--wow power leveling cheap, easy, wow gold purchasing.World of Warcraft,wow gold Super ... We can have your wow gold,buy wow gold,wow gold game,world of warcraft gold, wow Gold Cheap wow, Cheap wow gold,world of warcraft gold deal,Cheap WOW Gold wow power leveling ... Welcome to our website for you World of Warcraft Gold,Wow Gold,Cheap World of Warcraft Gold,wow gold,buy cheap wow gold,real wow gold,sell wow gold, ... Here wow gold of 1000 gold at $68.99-$80.99,World Of Warcraft Gold,[URL=http://www.powerlevelings.com/]power leveling[/URL]

Posted by xiaonan on January 06, 2007 at 12:47 AM PST #

autoreggenti orgia frustate vulva anteprime video orge filmulete porno fotoracconti mamme foto pisciate peeing donne e mutandine defloration free sexx fimini gratis mie foto nuda

Posted by olo on January 24, 2007 at 12:01 PM PST #

studentesse amatoriale mutande nere donna trans sborrati pornosex films gratis ragazze tettone troie uomini pornostart beurettes gratis abuelitos sexy ragazze masturbarsi nonne hard

Posted by olo on January 26, 2007 at 06:03 AM PST #

ragazze escort bionde fottilo buco culo le succhiatrici anziane vip giapponese mpeg latine troie socal video sexlinghe vecchie donne arapate moglie peloso signore bionde pauroso ragazze taglio modesto liceali pompini italian pornostar immagini schioccanti zozze gratis schemale beach teen foto

Posted by www on January 27, 2007 at 08:43 AM PST #

注册香港公司注册香港公司 注册香港公司注册香港公司 香港公司香港公司 美国公司美国公司 英国公司英国公司 注册香港公司注册香港公司 香港公司注册香港公司注册 香港公司香港公司 注册美国公司注册美国公司 美国公司注册美国公司注册 美国公司美国公司 注册英国公司注册英国公司 英国公司注册英国公司注册 英国公司英国公司 注册香港公司注册香港公司 防雷器防雷器 DEHN防雷器DEHN防雷器 OBO防雷器OBO防雷器 南京网站建设南京网站建设 seo培训seo培训 seo培训seo培训 网站推广网站推广 网站建设网站建设 网站排名网站排名 网站制作网站制作 网站设计网站设计 南京网站推广南京网站推广 南京网站建设南京网站建设 google排名google排名 google左侧排名google左侧排名 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架 货架货架

Posted by google排名 on January 30, 2007 at 07:16 PM PST #

薬剤師 病院や調剤薬局の求人と募集は薬剤師のための就職・転職サイトです。 薬剤師 求人 薬剤師の募集と求人なら就職や転職の人材紹介へ!

Posted by 病院 on February 09, 2007 at 03:28 AM PST #

Quit Smoking bu chantix

Posted by Chantix on March 16, 2007 at 11:23 AM PDT #

[URL=HTTP://WWW.GOOGLE.COM]GOOGEL[/URL]

Posted by WOW on March 26, 2007 at 07:23 AM PDT #

[CODE]GOOGLE[/CODE]

Posted by SDF on March 26, 2007 at 07:24 AM PDT #

http://www.friendly-cameriera-pompino.sebacto66.info bonny lesbiche masturbate http://www.pelose-hardbober.sebacto66.info farcical fighette urinate http://www.nella-stanza-spiaggia.debacto66.info scopate con nere http://www.carinissimo-lesbiche-sesso.debacto66.info maschietti gay http://www.pagine-personali-adulti.febacto66.info info orgia remember http://www.cuttiest-fighetta-ubriache.febacto66.info vergognoso inglese frode http://www.gif-animate-sexsi.rebacto66.info pretty bionde amore http://www.troiette-minigonna.rebacto66.info fair lesbiche fotti http://www.mousey-torride-ubriache.xebacto66.info in ufficio migliore http://www.negre-sborrate.xebacto66.info miss perizoma scopata

Posted by aa on March 29, 2007 at 02:24 PM PDT #

Create your own profile and personal page, talk with your friends using instant messenger or online chat, write blogs, join groups, add your pictures to gallery and view others, participate in forums and quizzes, tell your opinion in polls, browse and create classified ads, find out about events and more at online social networking community FriendLot.com

Posted by publish articles free on April 13, 2007 at 02:10 AM PDT #

Diabetes disease treatment medication provides herbs for diabetics at low cost without prescription.

Posted by antibiotics online on April 13, 2007 at 02:44 AM PDT #

wow powerleveling the best site for you.

Posted by Jimmy King on May 02, 2007 at 07:24 AM PDT #

wow power leveling world of warcraft power leveling

Posted by Jimmy King on May 02, 2007 at 07:25 AM PDT #

powerleveling power leveling power leveling

Posted by Jimmy King on May 02, 2007 at 07:26 AM PDT #

powerleveling wow power level wow power level</h2>

Posted by Jimmy King on May 02, 2007 at 07:26 AM PDT #

wow powerleveling wow gold wow power leveling

Posted by Jimmy King on May 02, 2007 at 07:27 AM PDT #

wow powerleveln world of warcraft power leveling wow power leveln</h3>

Posted by Jimmy King on May 02, 2007 at 07:27 AM PDT #

Welcome to Shanghai Natural M & E Engineering Co., Ltd. 欢迎访问上海耐佳机电工程有限公司网站: http://www.shnjjd.com 上海耐佳机电工程有限公司专业制造 混合机

Posted by 混合机 on May 11, 2007 at 07:04 AM PDT #

Sex Toys Vibrators

Choosing an Online Adult Sex Toys Shop can be quite overwhelming. With literally thousands of online adult sex toy shop offering an abundance of adult sex toys it can be a very stressful process when all you are looking for is to relieve some stress. There are several key factors when choosing an adult sex toy shop. It's essential that you follow these adult sex toy buying tips to ensure your complete overall satisfaction. The first step in choosing an online adult sex toys shop is how many years has the company been in business.


sex toys vibrators
sex toys vibrators

sextoys vibrators
sextoys vibrators
Penis Extension sex toys
Penis Extension sex toys

Posted by sex toy vibrator on June 10, 2007 at 04:28 PM PDT #

<A href="http://www.ls-lawtrans.com/" rel="nofollow">北京翻译公司</a>

Posted by 网站建设 on August 23, 2007 at 06:52 PM PDT #

[url=http://www.gopowerlevel.com/]wow power leveling[/url] [url=http://www.gopowerlevel.com/]wow powerleveling[/url] [url=http://www.gopowerlevel.com/]world of warcraft power leveling[/url] [url=http://www.gopowerlevel.com/]world of warcraft powerleveling[/url] [url=http://www.game-win.com/wow-powerleveling.html]wow power leveling[/url] [url=http://www.paper-cup-machine.com]paper cone machine[/url] [url=http://www.cardel.cn]briefcase[/url] [url=http://www.sinceremachine.com/]paper cup machine[/url]

Posted by fdgfgdfg on September 02, 2007 at 08:08 PM PDT #

[url=http://www.game-win.com]wow powerleveling[/url] [url=http://www.game-win.com/]powerleveling[/url] [url=http://www.game-win.com]world of warcraft powerleveling[/url] [url=http://www.game-win.com/]power leveling[/url] [url=http://www.game-win.com]wow power leveling[/url] [url=http://www.game-win.com]world of warcraft power leveling[/url] [url=http://www.game-win.com/World-of-Warcraft-power-leveling.html]world of warcraft power leveling[/url] [url=http://www.high-replica.com]replica handbags[/url] [url=http://www.game-win.com/wow-powerleveling.html]wow powerleveling[/url] [url=http://www.paper-cup-machine.com/cn/index.html]纸杯机[/url] [url=http://www.paper-cup-machine.com]paper cup machine[/url]

Posted by fdgfgdfg on September 02, 2007 at 08:09 PM PDT #

[url=http://www.juliankfashion.com]leather jackets[/url] The essential one-step product for complete leather care. URAD NEUTRAL [url=http://www.cigars-and-cigarettes.com]buy cigarettes[/url]

<a href="http://www.official-casino-news.net">online casino</a> | <a href="http://www.official-casino-news.net/japan/index.htm">&#12458;&#12531;&#12521;&#12452;&#12531;&#12459;&#12472;&#12494;</a> | <a href="http://www.official-casino-news.net/spain/index.htm">casino en linea</a>

Posted by best online casinos on September 06, 2007 at 11:09 PM PDT #

[url=http://www.blog-for-all.com ]casino, online casino, internet casino, beste casino [/url]
[url=http://www.blog-for-all.com/sitemap.asp ]sitemap, das beste casino [/url]
[url=http://www.blog-for-all.com/2.asp ]blackjack, online blackjack, internet blackjack, beste blackjack [/url]
[url=http://www.blog-for-all.com/3.asp ]slots, online slots, internet slots, beste slots [/url]
[url=http://www.blog-for-all.com/4.asp ]roulette, online roulette, internet roulette, beste roulette [/url]
[url=http://www.blog-for-all.com/5.asp ]craps, online craps, internet craps, beste craps [/url]
[url=http://www.blog-for-all.com/6.asp ]video poker, online video poker, internet video poker, beste video poker [/url]

Posted by online casino bonus on September 06, 2007 at 11:18 PM PDT #

hello all

Posted by prescription zyban on September 06, 2007 at 11:21 PM PDT #

[url=http://www.blog-for-all.com/7.asp ]poker, online poker, internet poker, beste poker [/url]
[url=http://www.blog-for-all.com/8.asp ]baccarat, online baccarat, internet baccarat, beste baccarat [/url]
[url=http://www.blog-for-all.com/9.asp ]keno, online keno, internet keno, beste keno [/url]

Posted by internet casinos usa on September 06, 2007 at 11:22 PM PDT #

experts who master the most professional skills. Even with no more than 17hours' work, a better service is of avail as promised than those freshman ,rookie or the nasty bots and macros.
www.lvlnirvana.com
www.lvlnirvana.com
www.lvlnirvana.com
[url=http://www.lvlnirvana.com//

Posted by 121 on September 28, 2007 at 10:25 PM PDT #

the most professional skills. Even with no more than 17hours' work, a better service is of avail as promised than those freshman ,rookie or the nasty bots and m