Exactly. This would change if you would abstract the interface to be just an 
"encoder" or "ascii encoder", but this is a nice overview!

On 19 Nov 2010, at 18:08 , Peter Kriens wrote:

> Aspects when you want to make something a service:
> 
>       1) It has multiple implementations (where you would use a factory in 
> classic Java). E.g. XML Parser, Log, etc.
>       2) It abstracts a concept so multiple parties could provide it. For 
> example a JDBC connection
>       3) It is optional, for example a Log or Web service.
>       4) It makes sense to have more than one of it, a listener
>       5) It is not 100% reliable, a remote connection
> 
> A service allows you to abstract yourself from the implementation, allowing 
> implementations to offer you instances. None of this is applicable for a 
> Base64 encoder so for me that is a library.
> 
> Kind regards,
> 
>       Peter Kriens
> 
> 
> On 18 nov 2010, at 21:15, Jeff McAffer wrote:
> 
>> IMHO there is a line there somewhere where code is just code.  A base 64 
>> encoder could just be a mess of statics on a class somewhere.  Should Arrays 
>> be a service?  Do we need a HashMapFactory service? How you draw the line is 
>> up to your and your expected user's requirements.  If you think that someone 
>> might actually have a better base 64 encoder or somehow not want to use 
>> yours in their deployment, then services are likely good for you.  
>> Otherwise, just write the code and use it.
>> 
>> Jeff
>> 
>> 
>> On 2010-11-18, at 9:14 AM, Jean-Baptiste Onofré wrote:
>> 
>>> Hi Alexander,
>>> 
>>> I prefer to use service because your bundle is completely decoupled from 
>>> the interface.
>>> 
>>> As the service is identified by an interface, you can change your 
>>> implementation without changing your bundle.
>>> 
>>> If you use Import/Export, changing the implementation means that you have 
>>> to update your bundle, which is not the case using a service.
>>> 
>>> Regards
>>> JB
>>> 
>>> On 11/18/2010 09:01 AM, Alexander Shutyaev wrote:
>>>> I have a very general question concerning usage of services versus
>>>> Import/Export package. What would be the main principles in choosing
>>>> between one of these schemes?
>>>> 
>>>> Let's say I want to write a BASE64 encode/decode utility. Plain old java
>>>> way would be to write a class like
>>>> 
>>>> public class Base64Utility
>>>> {
>>>>    public static String encode(byte[] data) {}
>>>>    public static byte[] decode(String encodedData) {}
>>>> }
>>>> 
>>>> To use it I would Import the package it resides in and then write
>>>> something like
>>>> 
>>>> String s = Base64Utility.encode(mydata);
>>>> 
>>>> On the other hand I could register an OSGi service under an interface
>>>> similar to the class shown above. That would require some extra actions.
>>>> But is it right to create service for such a primitive class? How do I
>>>> know when to use a service and when to just Import/Export the class
>>>> (sorry, package) I need?
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> OSGi Developer Mail List
>>>> [email protected]
>>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> [email protected]
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>> 
>> 
>> _______________________________________________
>> OSGi Developer Mail List
>> [email protected]
>> https://mail.osgi.org/mailman/listinfo/osgi-dev
> 
> 
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev


_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to