I would only support the current version: 2.x.

Gary


On Wed, May 15, 2013 at 2:00 PM, Nick Williams <
nicho...@nicholaswilliams.net> wrote:

> Guys,
>
> Background: Since I'm the lead developer on a Jackson Mapper module (
> https://github.com/FasterXML/jackson-datatype-jsr310), I'm actively
> involved on their development mailing list.
>
> Jackson 1.9 is, well, old. Specifically, 1.9.0 is two years old. 1.9 is
> the last minor version of the 1.x family. There will continue to be bug
> fixe releases—for now—about every 4-6 months. The last patch release was in
> January.
>
> Jackson 2.x is the current version with rapid release periods. 2.0 Is
> about a year old, 2.1 was released in October and 2.2 was released last
> month. Only major bugs will be fixed in 1.9.x. Minor bug fixes and all new
> features will go in 2.x.
>
> Jackson 1.x and 2.x use different Java packages. This has both advantages
> and disadvantages. One advantage is that frameworks and libraries, like
> Spring Framework, can easily support both versions because they can coexist
> on the same class path during compilation and testing. One disadvantage is
> that if some library is using 1.x and some other library is using 2.x and
> you create an application that depends on both libraries, you'll have to
> pull BOTH versions of Jackson on to your class path. Ugh.
>
> Log4j 2 is "brand new" (it's not even released yet). Typically, I would
> argue that new projects should not use old versions of their dependencies.
> In Log4j 2's case, I tend to lean the same direction. It doesn't seem wise
> to tie ourselves to Jackson 1.x so late in its life when Jackson 2.x is
> already mature and Log4j 2 isn't even released yet. As a Java 8, Spring 4,
> Jackson 2 user, I know I wouldn't love having to also have Jackson 1 on my
> class path (if I were using JSON configuration).
>
> I would suggest that we should either support both or we should only
> support 2.x, but only supporting 1.x feels wrong to me.
>
> Supporting both wouldn't be a major challenge. The way Spring does it is
> to have two Jackson* classes and Jackson2* classes with identical APIs.
> Depending on which version you are already using, you use the appropriate
> class. In this case, I would approach it like this:
>
> - Rename JSONConfiguration to Jackson1JSONConfiguration, and (using
> CheckStyle's import control) ensure that only this class imports Jackson 1.x
> - Create a similar class named Jackson2JSONConfiguration, and ensure that
> only this class imports Jackson 2.x
> - Alter JSONConfigurationFactory to detect which version is on the class
> path and return the appropriate JSON configuration, preferring 2.x if both
> are on the class path
>
> Thoughts?
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>
>


-- 
E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
Java Persistence with Hibernate, Second Edition<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to