Falta um modificador em Java?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
deniswsrosa
GUJ Ranger
[Avatar]

Membro desde: 21/07/2005 08:51:27
Mensagens: 807
Offline

Olá a todos!

Pesquisei no fórum e não achei nada relacionado, portanto resolvi postar.

A algum tempo venho observando que talvez a linguagem precise de um modificador extra, esse modificador faria o papel de manter as classes públicas acessíveis somente dentro do arquivo Jar que as contem.

Ex. Adicione qualquer framework ao seu projeto e logo vc verá que poderá importar e utilizar qualquer classe pública deste. Sendo que teoricamente vc deveria ter acesso somente as classes que você realmente irá precisar.

É possivel fazer isso usando OSGI por exemplo mas ter um modificador com essa funcionalidade não seria muito mais fácil?

Concordam? Discordam?

Aguardo opiniões!

SCJP, SCEA I
[MSN]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Falta sim, até que isso está previsto para entrar no Java 8 (não vai dar tempo para entrar no java 7).

http://openjdk.java.net/projects/jigsaw/


Leonardo3001
GUJ Ranger

Membro desde: 04/07/2007 18:28:58
Mensagens: 975
Offline

O projeto Jigsaw não é muito diferente do OSGI: não vai criar nenhum modificador novo, apenas um arquivo separado onde você define o que será público fora do pacote.

Eu sei que em Scala, existe o modificador private por pacote. Seria mais ou menos assim:


Indica que qualquer método de qualquer classe deste pacote tem visibilidade desta função. Agora, não lembro se os subpacotes conseguem vê-lo também. Se for possível, é exatamente o que você precisa.

P.S.: Pra mim Java 7 já virou "Duke Nuke Forever", imagina o Java 8.

Leonardo Veríssimo
-------------------------------------------------
Objectzilla
[WWW]
Rubem Azenha
GUJ Master
[Avatar]

Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline

Eu acho que isso só vai complicar as coisas. Tem muita coisa que poderia melhorar que é muito mais importante do que um modificador desses...



Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Acho os modificadores do Java extremamente permissivos.
Por que o protected abre tanto para as classes do mesmo pacote?

De privado mesmo você praticamente só tem o private.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
wellington.nogueira
GUJ Ranger
[Avatar]

Membro desde: 11/08/2006 11:29:56
Mensagens: 914
Localização: Osasco-SP
Offline

A idéia é interessante, também já senti falta disso, mas concordo com o Rubem Azenha quanto a ser algo de menor importância.

57 45 4C 4C 49 4E 47 54 4F 4E
Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!
"Se você acha que programar em Java com Swing é simples? Acredite em mim, não é!"
http://developmentforever.wordpress.com/
ozix
JavaEvangelist

Membro desde: 25/05/2006 18:00:15
Mensagens: 326
Localização: Porto Velho
Offline

Sempre pensei nesse ponto relacionando-o com a arquitetura multi-camadas. Embora você separe sua aplicação nas camadas A - B - C. Não há uma solução natural java que impeça que A acesse C.

Também sempre me fiz a mesma pergunta do Vini.

O céu é azul porque a matrix roda em Windows
zica
Thread.start()
[Avatar]

Membro desde: 10/09/2004 13:23:50
Mensagens: 46
Localização: São Pauo/SP
Offline

atualmente para suprir isso acabo controlando isto via JDepend com testes unitários

"A força de vontade pode superar tudo!"
Ernesto Guevara de la Serna, janeiro de 1947.

[ICQ]
deniswsrosa
GUJ Ranger
[Avatar]

Membro desde: 21/07/2005 08:51:27
Mensagens: 807
Offline

Rubem Azenha wrote:Eu acho que isso só vai complicar as coisas. Tem muita coisa que poderia melhorar que é muito mais importante do que um modificador desses...


Opa!

Claro que existem coisas muito mais importantes, mas é algo pequeno e pouco complexo mas que faria muita diferença, discordo quanto a complicar as coisas, pelo contrário, facilitaria e muito! pois evitaria que algum chato mecha aonde não deve, melhora o encapsulamento e ainda torna os componentes de uma forma geral menos propensos a erros.

This message was edited 2 times. Last update was at 29/06/2010 14:50:18


SCJP, SCEA I
[MSN]
Felagund
GUJ Master
[Avatar]

Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline

Eu sou até contra o uso do final hauhauhauha.

O melhor é ser extensivo somente em alguns casos o bloqueio deve existir

att
Rafael Felix

Rolling With Code
Twitter
[WWW]
andredecotia
JWizard
[Avatar]

Membro desde: 19/10/2009 14:37:32
Mensagens: 2267
Localização: São Paulo
Offline

existe private package ???

pacote privado? o q seria?

--
André AS


Analista Programador Java Web freelancer / home office
Linkedin: http://www.linkedin.com/profile/view?id=41470291&trk=tab_pro

[Email] [MSN] [ICQ]
Oenning
Thread.start()
[Avatar]

Membro desde: 11/05/2007 19:16:26
Mensagens: 48
Offline

Em C# existe o modificador internal:

Neste caso a classe MinhaClasse só é acessível dentro da mesma DLL


Blog: http://blog.oenning.eti.br
Twitter: @goenning
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

o "internal" foi uma forma muito simples e prática de resolver esse problema que o Anders Hejslberg (sempre ele ) achou no Java. Agora o Jigsaw é bem mais complicado
clone_zealot
JavaEvangelist

Membro desde: 21/11/2004 16:40:00
Mensagens: 424
Offline

Eu vejo que falta a linguagem Java o conceito de módulo.
Muitos pensam em pacotes como módulos. E até certo ponto, vejo isso como correto. Acontece que os pacotes são divisões mais lógicas do que físicas, mesmo eles sendo representados como pastas.
Para as DLLs(das antigas. No C# eu não sei se é assim) é mais fácil isso, pois elas são criadas para uma plataforma específica, numa linguagem específica, dentro de ambientes de desenvolvimento mais rígidos.

Eu digo que falta o conceito de módulo a linguagem Java especificamente, pois a comunidade de desenvolvimento tem esse conceito bem definido, e o projeto Jigsaw vem trazer esse conceito ao SDK do Java. Mas, a linguagem em si ainda não possui esse conceito. Falta uma abstração de mais alto nível para um módulo. Hoje em dia, temos que criar interfaces, proteger classes e fazer malabarismos para fornecermos um camada de comunicação externa, e ainda manter integro o encapsulamento, e não permitir que outros acessem coisas indevidas.

This message was edited 1 time. Last update was at 29/06/2010 17:07:41


"Não amo a espada por sua agudez,
não amo a flecha por sua rapidez,
não amo o homem por sua glória,
amo sim, tudo o que eles defendem"
Faramir, Príncipe de Ithilien
Oenning
Thread.start()
[Avatar]

Membro desde: 11/05/2007 19:16:26
Mensagens: 48
Offline

Sou desenvolvedor C# e recentemente comecei a usar Java.
Uma das coisas que percebi é justamente o que nosso amigo ali falou:

"Sempre pensei nesse ponto relacionando-o com a arquitetura multi-camadas. Embora você separe sua aplicação nas camadas A - B - C. Não há uma solução natural java que impeça que A acesse C. "

Em C# (geralmente) cada camada é separada em DLLs diferentes, sendo assim, é possível informar qual "camada" tem acesso à outras "camadas".

Blog: http://blog.oenning.eti.br
Twitter: @goenning
[WWW]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team