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