Are there any examples of widely adopted Java/Scala hybrid open-source
projects?  This can't be the only project to have faced this question
before; one could learn from another project's success/folly.

Chris
On Jan 14, 2012 12:11 AM, "Jason Baldridge" <[email protected]>
wrote:

> It's a perfectly fair question to ask. My first response is that I've been
> programming primarily in Scala for more than a year and I not only enjoy it
> but find myself far more productive with it. I am actually highly reluctant
> to write Java code given that I have Scala as an alternative. I used to use
> Python for quick scripting and Java for larger applications, but now I can
> happily use Scala for both. But it goes beyond that -- it provides plenty
> of opportunities to program in a very different way than either Python or
> Java support. Mainly that is using functional programming -- once you are
> used to it, not being able to program functionally becomes painful, and, in
> my experience, far less productive. It isn't a natural thing for many
> people initially, but a very nice thing about Scala is that it actually
> allows you to code in the imperative style you might be accustomed to while
> gradually bringing functional aspects into your programs. And it goes well
> beyond the nice little examples of how a various bit of Scala code is
> shorter than a given bit of Java that does the same thing -- it leads to
> different, and I would say, generally better design. (Though for what it's
> worth, the significant reduction in boilerplate code over Java is truly
> liberating.)
>
> Other things to like about Scala are type inference, immutable data
> structures, an amazing collections library, much better object orientation
> than Java, and pattern matching (not regex, but switch statements on
> steroids).  The fact that it compiles to Java byte code makes integration
> with Java and use of Java APIs quite straightforward, which was a reason
> for me to prefer it to other alternatives than Java. There's much more,
> including many intangibles that come with experience. Here's an article
> that conveys some of that, from the perspective of coming from Python:
>
> http://www.artima.com/weblogs/viewpost.jsp?thread=328540
>
> As for programmers, there is actually a very strong Scala contingent in the
> NLP and machine learning world, including groups at UMass Amherst,
> Stanford, and UT Austin, and probably elsewhere. Scala is also seeing
> corporate adoption, though of course it has nothing like the numbers of
> Java programmers. Most of my students are now using Scala, so having
> opennlp.ml be in Scala will be convenient for work they could contribute
> to
> the package.
>
> There have been a lot of reasons in the past not to use Scala, especially
> poor IDE support and problems with backward compatibility that made it
> problematic for enterprise projects. That has changed a great deal in the
> past year, especially with the efforts being made by Typesafe.
>
> Happy to discuss more!
>
> Jason
>
> On Tue, Jan 10, 2012 at 8:53 PM, James Kosin <[email protected]>
> wrote:
>
> > Everyone,
> >
> > +1
> > I'm okay with going forward with this; but, I must ask Why?  I know
> > Scala may be a good thing; but, if it generates Java byte code then
> > isn't there an equivalent way to write the same things in Java?
> >
> > What sort of benefit will we get with the code migrated and written in
> > Scala?  Even the author of that article said not many know the inner
> > workings of the language....  He was one of the few.
> >
> > Maybe we could ask or have a poll taken to see how many know Scala in
> > the community?
> >
> > Sorry for my concerns, or if they seem harsh or over-analytical.
> >
> > Just concerned,
> > James
> >
> > On 1/10/2012 12:20 AM, Jason Baldridge wrote:
> > > +1 to this in general, though I'm not into over-architecting things
> > > initially. Would be great to get things humming and then start
> supporting
> > > more pluggability.
> > >
> > > On Sat, Jan 7, 2012 at 7:33 AM, Jörn Kottmann <[email protected]>
> > wrote:
> > >
> > >> On 1/7/12 2:22 PM, Grant Ingersoll wrote:
> > >>
> > >>> Being able to take advantage of other classifiers seems like it would
> > be
> > >>> a really nice thing to be able to do.  I'd love to put OpenNLP over
> > Mahout
> > >>> or others.
> > >>>
> > >>> Besides, for testing purposes, if you could plugin the existing
> > >>> capability versus your new rewrite (in Scala) then you could easily
> > compare
> > >>> the two.  I can't imagine the abstraction layer is more than a few
> > >>> interfaces or abstract classes plus a bit of
> > configuration/injection/fill
> > >>> in the blank that allows one to specify the implementation.
> > >>>
> > >> Yes, we need plug-able classifiers and support for extensive
> > >> modification/extension of
> > >> our existing components. You are welcome to help us with that.
> > >>
> > >> One way of implementing this is to specify a (optional) factory class
> > >> during training
> > >> which is used to create a model (classifier). A second type of factory
> > >> class could
> > >> be specified to modify a component.
> > >>
> > >> These factory class names will be stored in our zip model package, and
> > can
> > >> then be used to instantiated the extensions which are necessary to run
> > the
> > >> component.
> > >>
> > >> The disadvantage of this approach is that it might not work well with
> > OSGi.
> > >> A big advantage is that OpenNLP itself will take care of configuring
> > >> everything
> > >> and the code needed to run an OpenNLP component is identical, even if
> > the
> > >> model
> > >> uses "custom" extensions. These must only be on the class path.
> > >>
> > >> Jörn
> > >>
> > >
> > >
> >
> >
>
>
> --
> Jason Baldridge
> Associate Professor, Department of Linguistics
> The University of Texas at Austin
> http://www.jasonbaldridge.com
> http://twitter.com/jasonbaldridge
>

Reply via email to