Novo Tipo Primitivo

7 respostas
A

Olá pessoal,

Estou interessado em modificar o núcleo Java para um trabalho acadêmico específico no qual estou desenvolvendo um protótipo baseado na linguagem e gostaria de inserir um novo tipo primitivo, alguém sabe onde estão implementadas as definições das palavras reservadas e como poderia inserir uma nova palavra. Seria isso possível?

Não quero definir como um objeto pois sairia do contexto do trabalho.

Se alguém puder ajudar agradeço.
abraço

7 Respostas

E

Você gostaria de dizer qual é o novo tipo primitivo? É que dependendo, posso lhe dizer exatamente o que deve ser alterado. Pode ser algo trivial e pode ser algo impossível de mexer no tempo que você tem disponível, dependendo de que tipo primitivo seja esse.

A

Preciso definir uma palavra que representara um contexto assim como o class ou interface. Na verdade seriam preciso indicar duas definições uma de tipo (parallel ou single) e outra representando um contexto como o de classe (class).

ViniGodoy

E não serve usar só annotations?

E

Você conseguiria implementar isso como uma anotação (“annotation”) de classe? É que esse tipo de coisa que você quer fazer não é nem um pouco trivial - você teria de mexer muita coisa tanto no compilador Java quanto na JVM. Digamos que mudar a linguagem, nem que seja alguma coisinha boba, é questão para um doutorado que dure 2 anos e que seja financiado pela Oracle. :frowning:

Você poderia, por exemplo, indicar o segundo significado de “contexto” por:

public @Context class Bla {
}

E o primeiro como:

class Bla {
    public @Parallel void method() {
...

ou

class Bla {
    public @Single void method() {
...

Estude bem “annotations” e veja que o que você quer fazer é relativamente trivial com Annotations.

E

Se não quiser usar Annotations, eu recomendaria fazer um sub-sub-subconjunto do Java e criar um compilador para essa linguagem, cujo “target” é a JVM.
É bem mais simples que tentar mexer no compilador Java embora os fontes estejam disponíveis .
Acredito que só tentar estudar o compilador Java e a JVM para ver o que deve ser mudado nele leve cerca de 2 meses full-time (que é tempo que você não deve ter).

A

Esse é o grande problema sei que não é algo trivial e o tempo que disponho também é curto. Vou estudar um pouco mais sobre annotations e verificar até onde posso chegar!!! E continuar analisando as modificações para inserir diretamente, esse questão de construir um compilador para um sub-conjunto JAVA é uma opção que não descarto tb, ainda tenho uns 3 meses pela frente e estou disposto a dedicar um bom tempo.

Só para esclarecer onde seriam realizadas essas modificações especificamente, não identifiquei os pontos que levassem a essas definições.

E

Vou dar um exemplo. Digamos que você tenha uma classe que você queira anotar como “Parallel”. Na anotação, você quer indicar o grau de paralelismo (por exemplo:

public class @Parallel (instances = 4) MyTask {
}

Em vez de você chamar diretamente o construtor dessa classe, você tem de criar uma outra classe que carregue a definição dessa classe, veja que ela tem uma anotação “Parallel” com o atributos “instances = 4”, e então pode, por exemplo, criar 4 instâncias que rodam sob uma única thread, 1 instância que é compartilhada por 4 threads ou sei lá como você vai definir a sua estratégia de paralelização das instâncias.

Criado 26 de novembro de 2012
Ultima resposta 26 de nov. de 2012
Respostas 7
Participantes 3